Я хочу перенаправить не-ssl-трафик на ssl для всех поддоменов. Я хочу, чтобы поддомен остался прежним. Я хочу указать другой proxy_pass
для staging.foo.com. У меня сейчас только 3 дела foo.com
, www.foo.com
и staging.foo.com
. Я хочу, чтобы прокси-сервер передавал пустой домен и www на localhost 8000. И прокси-сервер передает staging
поддомен на localhost 8001.
http://foo.com/ -> https://foo.com/ -proxy-> 127.0.0.1:8000
http://www.foo.com/ -> https://www.foo.com/ -proxy-> 127.0.0.1:8000
http://staging.foo.com/ -> https://staging.foo.com/ -proxy-> 127.0.0.1:8001
При следующих условиях весь трафик на www
или staging
перенаправляется на пустой домен. Что я делаю не так?
server {
listen 80;
server_name foo.com www.foo.com staging.foo.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name foo.com www.foo.com;
# ...
location / {
proxy_pass http://127.0.0.1:8000/;
# ...
}
}
server {
listen 443;
server_name staging.foo.com;
# ...
location / {
proxy_pass http://127.0.0.1:8001/;
# ...
}
}
Сначала измените server {}
раздел в:
server {
listen 80;
server_name foo.com www.foo.com staging.foo.com;
return 301 https://$host$request_uri;
}
Заметка $server_name
-> $host
, это решение вашей проблемы. Замена redirect
к return
не обязательно, но гораздо лучше.