NGinx инвертируют прокси и субдомены на apache2

У меня в настоящее время есть nginx VM установка для маршрутизации трафика между 3 доменами, но имею проблему с маршрутизацией субдоменов в данный момент. Текущая конфигурация идет PFSense-> nginx обратный прокси-> apache2. Я могу получить доступ к корневому доменному штрафу, но любое время, я ввожу субдомен, я направляюсь к корню вместо этого.

Вот моя virtualhost конфигурация, существуют некоторые дополнительные объекты там, потому что я должен смочь обработать 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;
        }
}
0
задан 3 February 2016 в 10:58

2 ответа

В то время как 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;
}
0
ответ дан 26 July 2019 в 08:22

Между созданием модификаций на основе этого сообщения: https://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when-reverseproxying

и перечитывание моей конфигурации мне удалось получить его работа.

0
ответ дан 26 July 2019 в 08:22

Другие вопросы по тегам:

Похожие вопросы: