Nginx 反向代理力 https
Nginx Reverse proxy force https
我们有一个使用 nginx 的反向代理服务器设置。该服务器会将访问者重定向到他们访问路径中的相应服务器。现在,我想设置 nginx.conf 强制将它们重定向到 https。问题是我收到 "too many redirection" 错误。我尝试使用重写并添加 "proxy_set_header X-Forwarded-Proto https;" 但它的 none 有效。我们有办法实现这一目标吗?我们已经在 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/ 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;
}
使用单独的块。
# 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;
}
}
所以您正在使用 cloudflare 作为您的 DNS。
即使您在 cloudflare 端使用免费版本的 cloudflare,也有一个非常简单的 hack 可以强制用户使用 https。只需在您的 Nginx 上托管 http 版本。
1- 打开 cloudflare 并选择您的域。
2- 转到“页面规则”选项卡。
3- 创建页面规则
4- 对于 url,放 http://www.example.com/*
5- 设置,选择总是使用https
6- 单击保存并部署
现在你已经在你的 cloudflare 上配置强制用户重定向到 https url。
我们有一个使用 nginx 的反向代理服务器设置。该服务器会将访问者重定向到他们访问路径中的相应服务器。现在,我想设置 nginx.conf 强制将它们重定向到 https。问题是我收到 "too many redirection" 错误。我尝试使用重写并添加 "proxy_set_header X-Forwarded-Proto https;" 但它的 none 有效。我们有办法实现这一目标吗?我们已经在 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/ 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;
}
使用单独的块。
# 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;
}
}
所以您正在使用 cloudflare 作为您的 DNS。
即使您在 cloudflare 端使用免费版本的 cloudflare,也有一个非常简单的 hack 可以强制用户使用 https。只需在您的 Nginx 上托管 http 版本。
1- 打开 cloudflare 并选择您的域。
2- 转到“页面规则”选项卡。
3- 创建页面规则
4- 对于 url,放 http://www.example.com/*
5- 设置,选择总是使用https
6- 单击保存并部署
现在你已经在你的 cloudflare 上配置强制用户重定向到 https url。