同一台服务器上的 Apache2 和 Nginx:如何让 Nginx 仅监听某些 IP,而让 Apache2 监听其他 IP?

同一台服务器上的 Apache2 和 Nginx:如何让 Nginx 仅监听某些 IP,而让 Apache2 监听其他 IP?

在 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.2192.0.2.3192.0.2.4192.0.2.5

  • Nginx 必须监听192.0.2.1192.0.2.2192.0.2.3
  • Apache2 必须监听192.0.2.4192.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>

相关内容