我正在尝试将所有HTTP请求重定向到HTTPS reqs。我的后端是节点。 这是我在 conf.d / 上的nginx配置:
@font-face {
font-family: MyriadProCond;
src: url('include/MyriadProCondRegular/MyriadPro-Cond.eot');
src: url('include/MyriadProCondRegular/MyriadProCondRegular.woff') format('woff'), /* Путь к файлу со шрифтом */
url('include/MyriadProCondRegular/MyriadProCondRegular.ttf') format('truetype'),
url('include/MyriadProCondRegular/MyriadProCondRegular.otf') format('otf');
}
}
这是我的节点配置:
upstream node {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name mydomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name mydomain.com;
ssl on;
gzip on;
ssl_certificate /etc/letsencrypt/live/mydomain.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_session_timeout 5m;
location / {
proxy_pass http://node;
proxy_redirect off;
}
当我明确使用HTTPS协议时,它正在工作。但是,如果我使用HTTP协议它不起作用,即不会重定向到HTTPS。
有什么建议吗?
答案 0 :(得分:1)
我找了一个类似的例子,找到了这个页面:https://bjornjohansen.no/redirect-to-https-with-nginx
我看到的唯一有意义的区别是,在那个页面上,他正在return 301 https://$host
而不是$server_name
。这个问题似乎表明使用主机可能更好:https://serverfault.com/questions/706438/what-is-the-difference-between-nginx-variables-host-http-host-and-server-na
我还要仔细检查配置中的所有server_name
条目。
您应该能够通过使用像Charles,wireshark或者甚至是浏览器调试器这样的工具来查看重定向 - 因此应该可以计算出使用它发回的内容。它也可能在日志文件中。
如果直接转到https://
它可以正常工作,这意味着https和nginx与节点之间的连接正常工作;只需要让重定向正常工作。