我们设置了 nginx 负载均衡器来配置我们的服务器。
现在,要求是我们维护的所有 DNS 都应该只允许使用 https。
例如:tempserver.com 是指向这个公共 lb 的 dns,它反过来会与 tomcat 应用程序连接。
以下是我的配置文件。
upstream backend25 {
server 10.65.74.9:80;
}
##########################################################################
server {
listen 80 backlog=1000;
listen 8080 backlog=1000;
############################### URL #######################################
server_name tempserver.get.com;
if ($http_x_forwarded_proto = "http") {
rewrite ^/(.*)$ https://tempserver.get.com/$1 permanent;
}
access_log /var/log/nginx/access-tempserver.log upstream_time buffer=128k flush=1m;
error_log /var/log/nginx/error-tempserver.log;
client_max_body_size 100M;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://backend25;
}
########################## SSL for Public only #############################
listen 443 ssl;
#ssl on;
ssl_certificate /opt/ssl_new/ssl_bundle.crt;
ssl_certificate_key /opt/ssl_new/privatekey.key;
}
所以我使用下面的方法进行重定向。
if ($http_x_forwarded_proto = "http") {
rewrite ^/(.*)$ https://tempserver.get.com/$1 permanent;
}
现在如果我触发http://tempserver.get.com它正确地重定向到https://tempserver.get.com
这很好。但如果我传递任何参数,例如http://tempserver.get.com/tempserver
它正在接受 http 连接但重定向没有发生。
那么,这里可以做什么?有什么建议吗?
提前致谢。
答案1
执行 HTTP 到 HTTPS 重定向的首选模式如下:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
使用此功能时,您需要从当前配置中删除listen 80;
该语句。if