如何在 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 然后用
重启 ngnixsudo 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?的主要内容,如果未能解决你的问题,请参考以下文章