【问题标题】:nginx http to https cause too many redirectnginx http 到 https 导致重定向过多
【发布时间】:2015-08-31 17:40:56
【问题描述】:

以下 nginx 设置适用于 https://DNSNAMEhttp://DNSNAME

upstream prod {
    server server_ip_1;
    server server_ip_2;
}

server {
    listen 80;
    listen 443 ssl;

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

    server_name localhost;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        proxy_pass        https://prod;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header  Host $host;
    }
}

但我需要始终将域设置为 https:// 并初始化 DNSname。所以当我尝试像下面这样重定向时。它导致太多重定向并且无法加载页面。请任何人帮助解决它。

server {
  listen 80;
  server_name DNSName;
  return 301 https://$server_name$request_uri;
}

【问题讨论】:

  • 我遇到了同样的错误。你有没有偶然解决这个问题?

标签: redirect ssl nginx https ssl-certificate


【解决方案1】:

我将 80 和 443 分成两个独立的服务,类似于。

upstream prod {
    server server_ip_1;
    server server_ip_2;
}

server {
    listen    80;
    server_name  localhost;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;

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

    server_name localhost;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        proxy_pass        https://prod;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header  Host $host;
    }
}

它对我有用。谢谢!

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2016-07-11
    • 2011-03-29
    • 2018-01-05
    相关资源
    最近更新 更多