如何在 Ubuntu 上同时运行 nginx 和 Apache?

Posted

技术标签:

【中文标题】如何在 Ubuntu 上同时运行 nginx 和 Apache?【英文标题】:How can I run both nginx and Apache together on Ubuntu? 【发布时间】:2014-05-26 07:27:00 【问题描述】:

我想将 Apache 和 nginx 配置为在 Ubuntu 上一起运行,因为我想在 nginx 和 Apache 上进行开发。我读过我必须在 Apache 或 nginx 上编辑配置,以使其中一个在另一个端口而不是 80 上运行。

我应该在 Nginx 中编辑哪些文件以使其通过另一个端口运行?

【问题讨论】:

您已经回答了自己的问题并且是正确的,您需要为每个守护进程/服务器设置不同的端口。你都尝试了些什么?您是否安装了这两个软件包并考虑更改配置? 感谢 apesa。你能告诉我需要为 nginx 编辑哪些文件以使其在另一个端口而不是 80 上运行吗?就像我在 80 上运行 apache 一样。 不过,一个有趣的方面是两个安装程序都有一个/var/www/index.html 文件。因此,您安装的第二台服务器将默认显示另一台服务器的首页,一旦它启动并正常运行。 【参考方案1】:

转到/etc/nginx/sites-available,然后修改应该侦听不同端口的主机文件(如果您没有在这里更改任何内容,您会找到一个default文件,输入更改它)

在文件中将listen: 80改成你想监听的端口

别忘了重新加载服务:service nginx reload

【讨论】:

感谢工作!我之前也尝试过,但我试图在没有端口号的情况下访问该站点。因此,在更改默认文件并将端口更改为 8080 后,我能够访问该站点:www.mysite.com:8080 ..【参考方案2】:

最好让apache 监听不同的端口,并指示nginx 反向代理动态流量 到您的apache,同时提供静态文件 nginx.

/etc/apache2/ports.conf 中的 apache 包括:

Listen 8080

如需更多信息,请参阅: https://serverfault.com/questions/92943/server-has-apache-installed-how-to-install-nginx-alongside-it

【讨论】:

有什么理由让 Apache 更好地监听不同的端口?更容易做?性能更好? 我认为这是为了更好的性能。 nginx 是自下而上构建的反向代理和静态页面 Web 服务器,似乎它在静态页面上表现最好(最好的并发管理,另外,如果不需要,不加载解释器),而 apache 在动态页面上表现更好页面(内置解释器)。我相信apache 也可以做反向代理,但它比nginx 更棘手,而且,这样做似乎我们失去了一些有趣的apache 功能。 赞成,因为我认为逻辑是正确的......但是,更详细的答案将不胜感激:为什么要提前nginx,以及更多程序细节...... 更容易做,亲爱的@weezilla【参考方案3】:

这是如何将 Apache 和 NGINX 安装在同一个 80 端口(在本地主机上)的答案。

假设您同时安装了 NGINX 和 Apache...

1.为每一个选择不同的 IP 地址。

让我们设置hosts 文件以便快速访问起始页。

sudo nano /etc/hosts

追加行(使用您喜欢的任何本地 IP)

127.0.0.1   nginx
127.0.0.2   apache

2。为 NGINX 设置监听 IP 和端口

NGINX 必须只监听一个 IP 地址。

sudo nano /etc/nginx/sites-enabled/default

并替换行

---(删除行) +++(添加行)

--- listen 80 default_server;
--- listen [::]:80 default_server;
+++ listen nginx:80;

如果你想使用 SSL,对 443 端口做同样的事情。

重要!

确保所有启用的 NGINX 网站都在 nginx:80 上侦听

重启 NGINX

sudo service nginx restart

使用命令sudo netstat -tulpn | grep :80进行检查

tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN      26540/nginx: master

完成!现在您可以通过 url http://nginx 访问默认 NGINX 主机

3.为 Apache 设置监听 IP 和端口

Apache 也必须只监听一个 IP 地址。

端口:

sudo nano /etc/apache2/ports.conf

并替换行

---(删除行) +++(添加行)

--- Listen 80
--- Listen 443
+++ Listen apache:80
+++ Listen apache:443

默认虚拟主机:

sudo nano /etc/apache/sites-enabled/000-default

并替换行

---(删除行) +++(添加行)

--- <VirtualHost *:80>
+++ <VirtualHost apache:80>

如果你想使用 SSL,对 443 端口做同样的事情。

重要!

确保所有启用的 Apache 网站都在 apache:80 上侦听

重启 Apache

sudo service apache2 restart

使用命令sudo netstat -tulpn | grep :80进行检查

tcp        0      0 127.0.0.2:80            0.0.0.0:*               LISTEN      26829/apache2

完成!现在您可以通过 url http://apache 访问默认的 Apache 主机

【讨论】:

【参考方案4】:

所以我遇到了类似的问题,我让 Apache 在 Ubuntu 14.04 上运行,我必须在 Apache 旁边安装 nginx,所以在安装 nginx 后,我将 ngnix 服务器的侦听端口从默认的 80 更改为 81,它确实很神奇下面的指令来实现它

cd /etc/nginx/sites-available
sudo cp default default.bak
sudo nano default

在此处更改端口。

server 
listen 81 default_server;
listen [::]:81 default_server ipv6only=on;

保存并退出 nano 然后用

重启 ngnix
sudo service nginx restart

在浏览器http://localhost:81 中,您的服务器已启动

`

【讨论】:

【参考方案5】:

如果 apache 在 port 80 上运行,那么您必须更改 apache 侦听端口或 nginx 侦听端口。

改变nginx监听端口:

使用 nano 或您选择的任何文件编辑器打开 /etc/nginx/sites-available/default 文件,然后更改这两行

 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on;

 listen 8000 default_server;
 listen [::]:8000 default_server ipv6only=on;

如果port 8000 未绑定到任何其他服务。

然后使用service nginx reload重新加载nginx

【讨论】:

以上是关于如何在 Ubuntu 上同时运行 nginx 和 Apache?的主要内容,如果未能解决你的问题,请参考以下文章

nginx 错误:(13:权限被拒绝)同时连接到上游)

在Ubuntu上配置测试成功后如何重启nginx?

如何在 Ubuntu上使用 Nginx 设置密码验证

如何在 Ubuntu上使用 Nginx 设置密码验证

如何在 Ubuntu上使用 Nginx 设置密码验证

如何同时在 Nginx 和 Apache 上托管网站(部分网站)