nginxで動作するWebサーバーがあります。無料のドメイン名を登録し.tk
、Let's Encrypt証明書をインストールしました。次の設定は私のHTTPSです。
if ($ssl_protocol = "") {
rewrite ^ https://$server_name$request_uri? permanent;
}
ただし、NginxからすべてのHTTPS設定を削除した後にアクセスできなくなりました。http://mysite.tk。ブラウザでもキャッシュをクリアしましたが、動作しません。
修正する
私のものnginx.conf
#user nobody;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
gzip on;
server {
listen 80;
# listen 443 ssl;
server_name xxx.tk;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# TLS configurations
# ssl_certificate /etc/letsencrypt/live/xxx.tk/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/xxx.tk/privkey.pem;
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_prefer_server_ciphers on;
# ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
# add_header Strict-Transport-Security max-age=15768000;
# if ($ssl_protocol = "") {
# rewrite ^ https://$server_name$request_uri? permanent;
# }
location / {
index index.php index.html index.htm;
}
location /files {
autoindex on;
}
location ~ \.php$ {
root /home/tester/local/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
コメントから:
設定を変更した後、デーモンを再起動しました。
Nginxもポート80でリッスンしています。次のように確認してください。
netstat -pltun
ブラウザからすべてを消去しました。しかし、まだ動作しません。
答え1
HTTPSをHTTPに戻すことができない最も可能性の高い理由は次のとおりです。
# add_header Strict-Transport-Security max-age=15768000;
今コメントされていますが、すでにテストしている可能性があります。
しかし、あなたは間違っていました。すべてのHSTSガイドは、HTTPSを介してドメインを配信できるという自信に基づいて時間の価値を高めるべきであることを知らなければならないからです。
答え2
ブラウザはしばしばhttp 301をキャッシュします。http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/良い本です。
以前にサイトで使用したことのないブラウザでも機能しますか?
また、ブラウザ開発ツールを開き、キャッシュを消去してもリダイレクトを受け取っていることを確認してください。
答え3
まずこれを覚えておくと役に立ちます。もし悪いなら。
さらに、着信https要求はデフォルトでポート443に送信されます。着信要求は通常SSLも使用するため、再構築時にこの機能を無効にすることをお勧めします。このようなブロックは、次を使用するのではなく、すべてをhttpリスナーで指します。
server {
listen 443;
server_name _;
ssl off;
rewrite ^ http://$server_name$request_uri?$args permanent;
}
ベストプラクティスは、リッスンしている各ポートに対してhttpとhttpsサーバーを別々に定義することです。これにより、トラブルシューティングが簡単になり、後で問題を軽減できます。