如何在Ubuntu上同时运行nginx和apache

mat*_*ths 44 apache ubuntu nginx

我想配置apache和nginx在ubuntu上一起运行,因为我想在nginx和apache上进行开发.我已经读过我必须在apache或nginx上编辑配置,使其中一个在另一个端口而不是80上运行.

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

请帮忙.

red*_*777 37

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

在文件中更改listen: 80为您要收听的端口

不要忘记重新加载服务: service nginx reload


has*_*abi 18

最好是移动apache来监听不同的端口并指示nginx在服务/ static/by nginx时反向代理动态流量到你的apache.

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

Listen 8080
Run Code Online (Sandbox Code Playgroud)

要获得额外信息,请访问:https://serverfault.com/questions/92943/server-has-apache-installed-how-to-install-nginx-alongside-it

  • 为什么让Apache在不同的端口上监听更好的理由?更容易做到?更好的性能? (5认同)
  • 我认为这是为了更好的表现。`nginx` 自下而上构建为反向代理和静态页面 Web 服务器,似乎它在静态页面上表现最好(最好的并发管理,另外,如果不需要,不加载解释器),而 `apache` 在动态下表现更好页面(内置解释器)。我相信 `apache` 也可以做反向代理的事情,但它比使用 `nginx` 更棘手,而且,似乎我们通过这样做失去了一些有趣的 `apache` 特性。 (2认同)

Jek*_*kis 8

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

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

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

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

sudo nano /etc/hosts
Run Code Online (Sandbox Code Playgroud)

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

127.0.0.1   nginx
127.0.0.2   apache
Run Code Online (Sandbox Code Playgroud)

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

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

sudo nano /etc/nginx/sites-enabled/default
Run Code Online (Sandbox Code Playgroud)

并更换线条

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

--- listen 80 default_server;
--- listen [::]:80 default_server;
+++ listen nginx:80;
Run Code Online (Sandbox Code Playgroud)

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

重要的!

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

重启 NGINX

sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)

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

tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN      26540/nginx: master
Run Code Online (Sandbox Code Playgroud)

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

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

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

端口:

sudo nano /etc/apache2/ports.conf
Run Code Online (Sandbox Code Playgroud)

并更换线条

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

--- Listen 80
--- Listen 443
+++ Listen apache:80
+++ Listen apache:443
Run Code Online (Sandbox Code Playgroud)

默认虚拟主机:

sudo nano /etc/apache/sites-enabled/000-default
Run Code Online (Sandbox Code Playgroud)

并更换线条

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

--- <VirtualHost *:80>
+++ <VirtualHost apache:80>
Run Code Online (Sandbox Code Playgroud)

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

重要的!

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

重启阿帕奇

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

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

tcp        0      0 127.0.0.2:80            0.0.0.0:*               LISTEN      26829/apache2
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个非常聪明的技巧,可以在相同的 80/443 端口上启用这两个端口,但是......请注意,这样您的服务器将只侦听_来自您自己的机器_的请求。他们不会响应 LAN 或互联网请求 (2认同)

小智 5

所以我遇到了类似的问题,我在 Ubuntu 14.04 上运行了 Apache,我必须在 Apache 旁边安装 nginx,因此在安装 nginx 后,我将 ngnix 服务器的侦听端口从默认的 80 更改为 81,并且按照以下说明进行了魔术操作实现这一目标

cd /etc/nginx/sites-available
sudo cp default default.bak
sudo nano default
Run Code Online (Sandbox Code Playgroud)

在这里更改端口。

server {
listen 81 default_server;
listen [::]:81 default_server ipv6only=on;
Run Code Online (Sandbox Code Playgroud)

保存并退出nano然后重新启动ngnix

sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)

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

`