Httpsからhttpにリダイレクトするにはどうすればよいですか?
私は以下のコードを持っていますが、動作していないようです。
server {
listen 443;
server_name example.com;
rewrite ^(.*) http://example.com$1 permanent;
}
上記の答えは機能します。自己署名証明書を生成する(または実際の証明書を持っている)必要があり、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;
}
自己署名証明書である場合、ブラウザはい警告を出します。
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つの個別のサーバーブロックを作成する必要があります。
ポート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;
}
if ($Host = 'foo.com') {
rewrite ^/(.*)$ http://www.foo.com$1 permanent;
}