Nginx 反向代理强制 https

ban*_*i16 1 ssl proxy reverse-proxy nginx server

我们有一个使用 nginx 进行反向代理的服务器设置。该服务器会将访问者重定向到访问路径对应的服务器。现在,我想设置 nginx.conf 以强制将它们重定向到 https。问题是我收到“太多重定向”错误。我尝试使用重写并添加“proxy_set_header X-Forwarded-Proto https;” 但都不起作用。我们有办法实现这一目标吗?我们已经在 cloudflare 上设置了 ssl 证书,因此我们不需要将其添加到配置中。

以下是当前 nginx 的配置设置。

   server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  localhost;
    root         /usr/share/nginx/html;

   if ($http_x_forwarded_proto = "http") {
      rewrite  ^/(.*)$  https://development-link/$1 permanent;
   }

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://development-elb1;
            proxy_set_header X-Forwarded-Proto https;
    }

    location /en {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://development-elb2;
            proxy_set_header    X-Forwarded-Proto https;
    }
Run Code Online (Sandbox Code Playgroud)

Tan*_*Tat 6

使用单独的块。

# Redirect HTTP to HTTPS
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  localhost;
    return 301   https://$host$request_uri;
}

# HTTPS
server {
    listen       443 default_server;
    listen       [::]:443 default_server;
    server_name  localhost;
    root         /usr/share/nginx/html;       

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://development-elb1;
        proxy_set_header X-Forwarded-Proto https;
    }

    location /en {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://development-elb2;
        proxy_set_header    X-Forwarded-Proto https;
    }
}
Run Code Online (Sandbox Code Playgroud)