如何从https重定向到http?
我有下面的代码,但它似乎不起作用。
server {
listen 443;
server_name example.com;
rewrite ^(.*) http://example.com$1 permanent;
}
答案 0 :(得分:22)
上面的答案可行,你需要生成一个自签名证书(或有一个真正的证书)并配置nginx:
server {
listen *:443;
ssl on;
server_name domain.com;
rewrite ^(.*) http://domain.com$1 permanent;
ssl_certificate /data/certs/domain.crt;
ssl_certificate_key /data/certs/domain.key;
}
请记住,如果它是自签名证书,浏览器会给你一个丑陋的警告。
答案 1 :(得分:13)
建立jberger的评论应该有效的配置:
server {
listen *:80;
server_name example.com;
}
server {
listen *:443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com.cert;
ssl_certificate_key /etc/ssl/private/example.com.key;
return 301 http://$server_name$request_uri;
}
答案 2 :(得分:0)
if ($host = 'foo.com') {
rewrite ^/(.*)$ http://www.foo.com$1 permanent;
}
答案 3 :(得分:-1)
您需要创建2个单独的服务器块:
端口443(HTTPS)-在此块中定义所有内容,例如PHP,404,home,root等。即使您要将https://www.example.com重定向到https://example.com或反之亦然,也可以像@coulix一样在这里进行。
端口80(HTTP)-在这里您将只使用:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
# Redirect HTTP to HTTPS
return 301 https://example.com$request_uri;
}