Я пытался получить перенаправление http на https через nginx большую часть дня, и это была борьба. Я проверил несколько вопросов о стековом потоке и ряд статей в Интернете. Наконец-то я получил перенаправление http на https, но только для прямого IP-адреса, а не для домена, который я пытаюсь использовать.
Другими словами, http://12.345.67.890 перенаправляет на https://app.example.com,, но http://app.example.com не перенаправляет на https://app.example.com.
Это ожидается? Что я здесь не понимаю?
Файл конфигурации моего сайта
upstream appupstream {
server 0.0.0.0:3555;
}
server {
error_log /var/log/nginx/error.log warn;
listen [::]:80;
listen 80;
server_name app.example.com 12.345.67.890;
return 301 https://$server_name$request_uri;
access_log /var/log/nginx/access.log;
root /home/ec2-user/app/public;
proxy_set_header X-Forwarded-Proto $scheme;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://appupstream;
}
}
Когда я скручиваю эти сайты, заголовки, кажется, поддерживают то, что я вижу в моих браузерах:
Результаты IP curl
$ curl -I -L http://12.345.67.890
HTTP/1.1 301 Moved Permanently // <-- Note the permanent redirect on the ip
Server: nginx/1.12.1
Date: Sat, 03 Nov 2018 19:30:10 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://app.example.com/
HTTP/2 200
date: Sat, 03 Nov 2018 19:30:10 GMT
content-type: text/html; charset=utf-8
content-length: 4856
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-download-options: noopen
strict-transport-security: max-age=15778476; includeSubDomains
p3p: ABCDEF
Результаты скручивания домена
$ curl -I -L http://app.example.com
HTTP/1.1 200 OK // <-- No permanent redirect on domain
Date: Sat, 03 Nov 2018 19:30:39 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 4856
Connection: keep-alive
X-FRAME-OPTIONS: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
Strict-Transport-Security: max-age=15778476; includeSubDomains
P3P: ABCDEF
Я успешно выполнил nginx -t
, и я использовал nginx reload
и nginx restart
каждый раз, когда обновлял файл. Я удалил ВСЕ данные о просмотре (файлы cookie и т. Д.) И повторно посетил, но это поведение сохраняется Будем весьма благодарны за любые предложения / рекомендации!