在 Ubuntu 16.04 上,我需要在同一台服务器上使用多个 IP 地址运行 Nginx 和 Apache2。Nginx 只需监听某些 IP,而 Apache2 则需要监听其他不同的 IP。
使用 Apache2,通过在 中配置要监听的 IP 地址即可轻松实现这一点/etc/apache2/ports.conf
。但是,如何限制 Nginx 仅监听某些 IP,而不屏蔽其他 IP?
假设我有 5 个IP :192.0.2.1
、、和。192.0.2.2
192.0.2.3
192.0.2.4
192.0.2.5
- Nginx 必须监听
192.0.2.1
,192.0.2.2
和192.0.2.3
。 - Apache2 必须监听
192.0.2.4
和192.0.2.5
。 - 这两个服务器将监听各自 IP 上的 80 和 443 端口。
答案1
两个都Nginx和阿帕奇具有与绑定地址非常相似的语法的监听指令。
Nginx:
listen address[:port] [default_server] [ssl] ...;
在server {}
块中Apache:
Listen [IP-address:]portnumber [protocol]
在服务器配置中。虽然您的发行版可能会将配置放在中/etc/apache2/ports.conf
,但实际上它只是包含在中apache2.conf
:# It is split into several files forming the configuration hierarchy outlined # below, all located in the /etc/apache2/ directory: # # /etc/apache2/ # |-- apache2.conf # | `-- ports.conf # |-- mods-enabled # | |-- *.load # | `-- *.conf # |-- conf-enabled # | `-- *.conf # `-- sites-enabled # `-- *.conf # Include list of ports to listen on Include ports.conf
用所需的配置示例来回答:
Nginx
http {
server {
listen 192.0.2.1:80;
listen 192.0.2.2:80;
listen 192.0.2.3:80;
listen 192.0.2.1:443 ssl;
listen 192.0.2.2:443 ssl;
listen 192.0.2.3:443 ssl;
. . .
}
}
阿帕奇
Listen 192.0.2.4:80
Listen 192.0.2.5:80
<IfModule ssl_module>
Listen 192.0.2.4:443 https
Listen 192.0.2.5:443 https
</IfModule>