У меня в настоящее время есть 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;
}
}
В то время как 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;
}
Между созданием модификаций на основе этого сообщения: https://serverfault.com/questions/598202/make-nginx-to-pass-hostname-of-the-upstream-when-reverseproxying
и перечитывание моей конфигурации мне удалось получить его работа.