我没有主域证书,所以我在自己的几个开发域中使用了自我证明的证书。
我这样用:
server {
listen 443;
server_name secure.somehost.com;
ssl on;
ssl_certificate /etc/nginx/ssl/secure.crt;
ssl_certificate_key /etc/nginx/ssl/secure.key;
}
server {
listen 80;
server_name secure.somehost.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
现在我的所有https请求(例如https://anyhost.somehost.com/
)都以某种方式被重写为https://secure.somehost.com
。所以我想禁用此行为并为默认服务器关闭HTTPS,理想情况下将重写发送到简单HTTP(或简单地发送500错误)。
我试过这段代码。但由于我没有证书,我想我无法发送适当的回复。
server {
listen 443 default;
rewrite ^(.*) http://$host$1 permanent;
}
我必须使用default
服务器,因为我也处理了很多子域和外部域。
答案 0 :(得分:1)
如果要将https
请求(在端口443上)重定向到http
(在端口80上),则应在服务器块中包含SSL证书和密钥指令,如下所示: / p>
# redirect all default http requests to http://example.com
server {
listen 80 default_server;
server_name _;
access_log off;
return 301 $scheme://example.com$request_uri;
}
# redirect all https requests to http://example.com
server {
listen 443 ssl;
server_name _;
# ssl certificate and private key
ssl_certificate /etc/nginx/ssl/secure.crt;
ssl_certificate_key /etc/nginx/ssl/secure.key;
# you can add additional ssl parameters here (like the protocols
# and ciphers you want nginx to use).
return 301 http://example.com$request_uri;
}
只需将重定向的目标网址更改为您要使用的默认域/子网址。
如果您使用的是自签名证书,浏览器仍会提示您并说明证书不受信任。在浏览器的缓存中将其作为例外添加后,连接应该无需浏览器停止,每次都将其标记为不受信任。