Ssl Nginx反向代理强制https
我们有一个使用nginx的反向代理服务器设置。此服务器将把访问者重定向到访问他们的路径所在的相应服务器。现在,我想设置nginx.conf以强制将它们重定向到https。问题是我遇到了“太多重定向”错误。我尝试使用重写并添加“proxy\u set\u header X-Forwarded-Proto-https;”,但都不起作用。我们有没有办法做到这一点?我们已经在cloudflare上设置了ssl证书,因此无需将其添加到配置中 下面是当前nginx的配置设置Ssl Nginx反向代理强制https,ssl,nginx,proxy,server,reverse-proxy,Ssl,Nginx,Proxy,Server,Reverse Proxy,我们有一个使用nginx的反向代理服务器设置。此服务器将把访问者重定向到访问他们的路径所在的相应服务器。现在,我想设置nginx.conf以强制将它们重定向到https。问题是我遇到了“太多重定向”错误。我尝试使用重写并添加“proxy\u set\u header X-Forwarded-Proto-https;”,但都不起作用。我们有没有办法做到这一点?我们已经在cloudflare上设置了ssl证书,因此无需将其添加到配置中 下面是当前nginx的配置设置 server {
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;
}
使用单独的块
# 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;
}
}
使用单独的块
# 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,也有一种非常简单的方法可以强迫用户使用https。只需在Nginx上托管http版本 1-打开cloudflare并选择您的域 2-转到页面规则选项卡 3-创建页面规则 4-对于url,将* 5-对于设置,请选择始终使用https 6-单击保存并部署
现在,您已经在cloudflare上配置了强制用户重定向到https url。所以您使用cloudflare作为DNS 即使您在cloudflare端使用免费版本的cloudflare,也有一种非常简单的方法可以强迫用户使用https。只需在Nginx上托管http版本 1-打开cloudflare并选择您的域 2-转到页面规则选项卡 3-创建页面规则 4-对于url,将* 5-对于设置,请选择始终使用https 6-单击保存并部署
现在,您已经在cloudflare上配置了强制用户重定向到https url。您好,感谢您的回复。我尝试使用一个单独的块,但仍然出现“太多重定向错误”。您是否有来自开发服务器的HTTP/HTTPS重定向?没有,我们在开发中的重定向是在用户未登录时进行的。我在想,这可能是因为代理?不太确定,但我们有两台服务器,当用户访问没有/en的链接时,它将重定向到服务器1,但如果它有/en,它将转到服务器2 elb。我遇到了“太多重定向”错误,因为我忘了按端口分隔服务器块(例如,一个用于80,一个用于443),导致它无限重定向。嗨,谢谢你的回复。我尝试使用一个单独的块,但仍然出现“太多重定向错误”。您是否有来自开发服务器的HTTP/HTTPS重定向?没有,我们在开发中的重定向是在用户未登录时进行的。我在想,这可能是因为代理?不太确定,但我们有两台服务器,当用户访问没有/en的链接时,它将被重定向到服务器1,但如果它有/en,它将转到服务器2 elb。我遇到了“太多重定向”错误,因为我忘了按端口分隔服务器块(例如,一个用于80,一个用于443),导致它无限重定向。