Apache2 上的 NGinx 反向代理和子域名

Apache2 上的 NGinx 反向代理和子域名

我目前有一个 nginx VM 设置来在 3 个域之间路由流量,但目前在路由子域时遇到问题。当前配置为 PFSense -> nginx 反向代理 -> apache2。我可以正常访问根域,但每次我进入子域时,我都会被路由到根域。

这是我的服务器块配置,其中还有一些附加项目,因为我需要能够处理 websockets。

    server
{
        listen 80 default_server;
        server_name .mydomain.com;

        location /
        {
                proxy_pass http://<internal_server>;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
        }
}

server
{
        listen 443 default_server;

        server_name .mydomain.com;

        ssl_certificate /etc/nginx/secure/nproxy.crt;
        ssl_certificate_key     /etc/nginx/secure/nproxy.key;

        ssl on;
        ssl_session_cache       builtin:1000    shared:SSL:10m;
        ssl_protocols   TLSv1.2;
        ssl_ciphers     HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;

        access_log      /var/log/nginx/secureproxy.log;

        location /
        {
                proxy_pass http://<internal_server>;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
        }
}

答案1

虽然nginx支持通配符和正则表达式server_name,但您仍然必须在代理时指定子域。这可以使用$host变量来完成:

server {
    server_name .mydomain.com;
    listen 80;
    location / {
        proxy_pass http://$host;
    }
    access_log /var/log/nginx/$host-access.log;
    error_log /var/log/nginx/all-hosts-error.log;
}

foo.mydomain.com这将在内部代理对 的请求foo.mydomain.com。如果内部和外部域不匹配,请使用分组正则表达式:

server {
    server_name ~^(?<subdomain>.+)\.mydomain\.com$;
    listen 80;
    location / {
        proxy_pass http://$subdomain.internal.host;
    }
    access_log /var/log/nginx/$host-access.log;
    error_log /var/log/nginx/all-hosts-error.log;
}

答案2

在本文基础上进行修改:https://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when-reverseproxying

并重新阅读我的配置,我设法让它工作起来。

相关内容