У меня возникают проблемы с перенаправлением моих URL-адресов, отличных от www, и https.nginx перенаправить не-www на www и https для домена.com и поддомена
Что я хочу:
http://domain.com
http://www.domain.com
https://domain.com
должен перенаправлять https://www.domain.com
.
http://api.domain.com
должен перенаправлять https://api.domain.com
У меня есть seperata ключи SSL для domain.com и api.domain.com. Настройки SSL для api.domain.com обрабатываются через приложение node.js. Кроме того domain.com использует корневой документ и api.domain.com использует proxy_pass к Node.js приложения на порт 1336.
То, что я пытался:
# route non ssl api to ssl
server {
listen 80;
server_name api.domain.com;
return 301 https://api.domain.com;
}
# main ssl route for api.domain.com
server {
listen 443 ssl;
server_name api.domain.com;
location/{
proxy_pass https://localhost:1337;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# route non ssl to www ssl
server {
listen 80;
server_name www.domain.com domain.com;
return 301 https://www.domain.com;
}
# route non www ssl to ssl
server {
listen 443 ssl;
server_name domain.com;
return 301 https://www.domain.com;
}
# main ssl route for domain.com
server {
listen 443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
server_name www.domain.com;
location/{
root /var/www/domain.com/www;
}
}
маршрутов, которые работают, как и ожидалось: https://www.domain.com http://domain.com http://www.domain.com
не работает:
https://domain.com -> не безопасное подключение ион, потому что он пытается использовать сертификат от api.domain.com (это могло быть в кэш, потому что, возможно, я пробовал раньше другой способ, который был неправильно)
https://api.domain.com-> перенаправляет https://domain.com
http://api.domain.com -> перенаправляет https://domain.com
Nginx версии: Nginx/1.4.6 (Ubuntu)