【问题标题】:Unwanted nginx redirect to https不需要的 nginx 重定向到 https
【发布时间】:2017-04-17 02:02:10
【问题描述】:

我有一个这样的 nginx 设置:

/etc/nginx/sites-available/default-ssl.conf:

server {

  listen 443 ssl;

  server_name my.server.name;

  ssl_certificate /etc/letsencrypt/live/my.server.name/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/my.server.name/privkey.pem;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

#  root /usr/share/nginx/html;
  root /var/www/html;
  index index.html index.htm;

  location / {
    try_files $uri $uri/ =404;
  }

  location /proxiedhost/ {
    rewrite ^/proxiedhost(/.*)$ $1 break;
    proxy_pass  http://127.0.0.1:6080/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_redirect    off;
  }
  <<<< A couple more of these blocks >>>>
}
  server {
  listen 80;
  server_name origin.ticktockhouse.co.uk;
  return 301 https://$host$request_uri;
}

/etc/nginx/sites-available/aptrepo.conf:

server {
        listen   80; ## listen for ipv4; this line is default and implied

        root /home/aptrepo/;
        index index.html index.htm;

        server_name aptrepo.server.name;
}

我的问题是,当我浏览到http://aptrepo.server.name 时,它会自动重定向到https://aptrepo.server.name,我没有为它提供letsencrypt 证书。当然,我可以得到一个,但我并不特别需要它,并且想弄清楚为什么会发生这种情况。

我愿意相信它是 default-ssl.conf 中的服务器块,但我对为什么另一个服务器块不是完全独立的东西感到困惑。我四处寻找解释,但不幸的是,大多数文章/问题都是关于如何让 https 重定向到 http - 显然我已经解决了一个问题!

【问题讨论】:

  • 我在您的 aptrepo.server.name 配置中看不到 https 服务器部分。这是所有服务器的完整配置吗?你使用 HSTS 吗?
  • 如果可能的话,我希望 aptrepo.server.name 只能是 HTTP
  • 当然可以。你使用 HSTS 吗?显示curl -I http://aptrepo.server.name 的结果。你在哪里包括/etc/nginx/sites-available/aptrepo.conf

标签: ssl nginx


【解决方案1】:

可能是 nginx 没有选择正确的server {} 块。

仅出于测试目的,请尝试注释掉 return 301 https://$host$request_uri; 并查看这是否解决了 aptrepo.server.name 上的问题

【讨论】:

  • 谢谢,我试过了,它确实有效。我还添加了 return 301 行,它似乎按照我最初的意愿工作。我不想要它作为 http 的原因是为了迎合没有安装 apt-transport-https 的 Debian 机器。
猜你喜欢
  • 1970-01-01
  • 2018-09-01
  • 2020-09-11
  • 1970-01-01
  • 2016-04-20
  • 2020-03-21
  • 2016-03-10
  • 2015-08-16
  • 2015-02-14
相关资源
最近更新 更多