我在 Ubuntu 上使用 NGINX 进行 301 重定向,并为我的 Web 应用程序使用反向代理,目的是将流量重定向到非 www url,例如 https://mywebapplication.com
。
因此使用我当前的 NGINX Conf 文件配置:
mywebapplication.com -> https://mywebapplication.com
www.mywebapplication.com -> https://mywebapplication.com
http://mywebapplication.com -> https://mywebapplication.com
http://www.mywebapplication.com -> https://mywebapplication.com
123.456.789.123 -> https://mywebapplication.com
http://123.456.789.123 -> https://mywebapplication.com
工作正常,但是当在 URL 中提供带 HTTPS 的 IP 时,我得到“您的连接不是私有(private)的。”
https://123.456.789.123 -> Your connection is not private
这是我的 NGINX Conf。
server {
listen 123.456.789.123:80;
location / {
proxy_pass "http://localhost:4000/";
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
}
}
server {
listen 123.456.789.123:80;
server_name 123.456.789.123 123.456.789.123:4000;
return 301 https://mywebapplication.com$request_uri;
}
server {
listen 80 http2;
listen [::]:80 http2;
server_name mywebapplication.com www.mywebapplication.com;
return 301 https://mywebapplication.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.mywebapplication.com;
return 301 https://mywebapplication.com$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name mywebapplication.com;
...
...
...
...
}
如何使用 HTTPS 处理 IP 以成功进行 301 重定向?
谢谢你们!
最佳答案
这里的问题是您需要一个裸 IP 地址的 TLS 证书。根据 this thread 的说法,这样的证书真的很少见。当您在浏览器中打开证书时(显示“您的连接不安全”),您会看到该证书仅对 mywebapplication.com
有效,对 123.456.789.123< 无效
.
IP 地址的签名证书没有多大意义。这样的证书将向用户保证他已连接到 123.456.789.123
。然而,这并不能说明问题。没有 DNS,用户就不知道这个 IP 背后的人是谁。用户希望确信他已连接到由域名标识的服务,例如 mywebapplication.com
,并且并不关心 ip 是否为 123.456.789.123
或 321.654.987.321
。
我认为这不是一个大问题。你可以自己看看,如果大型网站有他们裸 IP 的证书:(请注意,下面 IP 后面的服务器将来可能会托管其他东西):
- 谷歌:https://172.217.18.14/
- Facebook :https://185.60.216.35/
- Github:https://192.30.253.112/
这些站点都没有其裸 IP 的证书。 (有些有针对 HTTP 的重定向)
关于ubuntu - 使用 HTTPS 的 IP 给出 "Your connection is not private"[Nginx/Ubuntu],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52878690/