我在工作中维护着几个应用程序,并且注意到某些员工能够使用通往这些应用程序的非安全路径,例如:example.com, www.example.com
。使用这些路径中的任何一个都会将它们定向到HTTP
路径而不是HTTPS
,除非它们在URL中指定HTTPS
。当前,我们使用nginx
作为网关,但是我没有对nginx gateway
进行初始配置,所以我真的不知道什么有效,什么无效。
这是我们的nginx.conf文件的摘录
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
location / {
proxy_pass http://localhost:3000;
}
}
# Settings for a TLS enabled server.
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name localhost;
ssl_certificate "/etc/nginx/ssl/domain-crt.txt";
ssl_certificate_key "/etc/nginx/ssl/domain-key.txt";
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
## More configuration below this...
}
我尝试在listen 80部分进行返回,但这没有用:
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
return 301 https://$host$request_uri;
location / {
proxy_pass http://localhost:3000;
}
}
我重新加载了nginx
的更正,但我仍然能够连接到http
路径,而无需将其重定向到https
。我不知道这与server_name是否为localhost
有关,因为我仅在网上看到示例将示例重定向到实际域名,但这是我们的应用程序的设置方式,我不知道如果更改将影响我们应用程序的连接。如果有人对如何使重定向正常工作有任何想法或建议,那就太好了。谢谢!
您最后缺少分号,也应该摆脱proxy_pass,因为那样会覆盖行为。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
location / {
return 301 https://$host$request_uri;
}
}