これはnginxを使用した最初のセットアップであり、nodejsへのプロキシに使用しています。 HTTPはポート3000にあり、HTTPSはポート3001にあります。
http://test.domain.com にアクセスすると、通常の安全でないページが読み込まれます。 https://test.domain.com にアクセスすると、安全なページが読み込まれます。しかし、https以外からhttpsにリダイレクトしたい。
私の設定の何が問題になっていますか?これは私が使用しているdomain.confファイル全体です。
server {
listen 80;
server_name test.domain.com
return 301 https://test.domain.com$request_uri;
}
server {
listen 443 ssl;
server_name test.domain.com;
ssl_certificate /etc/nginx/ssl/domain.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_Host;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://127.0.0.1:3001;
proxy_redirect off;
}
}
Nginxを何度も再起動しました。
ありがとう!
あなたはhttpサーバーブロックで書き換えを使用できます
server {
listen 80;
server_name test.domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
行末に「;」がありません。(または単に壊れたコピー/貼り付け?)
server_name test.domain.com;
有効なサーバー名なしでこのサーバーをオーバーライドする別のserver_blockがデフォルトサーバーで動作していると思います
ヒント:
1つのグローバルサーバーブロックですべてのhttpリクエストをキャッチする場合は、default_serverを使用します。
listen 80 default_server;
より多くの変数を使用できます;)
return 301 https://test.domain.com$request_uri;
に
return 301 https://$Host$request_uri;
リライトを使用しないでください。リターンが最速です。