NGINX:HTTP重定向到HTTPS不能与节点一起使用

时间:2016-05-18 20:36:32

标签: http redirect nginx https

我正在尝试将所有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。

有什么建议吗?

1 个答案:

答案 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与节点之间的连接正常工作;只需要让重定向正常工作。