私は最近、debian 8でnginxサーバーを作成しました。これには、/ etc/nginx/sites-available/defaultにnginxウェルカムページにリダイレクトするデフォルト設定が用意されています。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name your_server_ip;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
新しい制作ページを追加しました。たとえば、sslが付いた「example.com」です。
../example.comの設定では、デフォルトのサーバーとして設定されていません。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl;
listen [::]:443 ssl;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
....
これで、sslセキュリティが https://www.ssllabs.com/ssltest/analyze.html?d=example.com でテストしたところ、A +が得られました。しかし、「一貫性のないサーバー構成」についてコメントしていました。
そして、私がIPアドレスをロードすると、ブラウザでx.x.x.xをhttps:// x.x.x.xと言います https://example.com と同じページをロードしますが、ssl(緑のアドレスバー)なしです。 http:// x.x.x.xをロードすると、デフォルトのnginxウェルカムページがロードされます。
禁止されたメッセージを取得するようにデフォルト設定(IP用)を設定しようとしました。次のコードを追加しました
location / {
deny all;
}
今、example.comのsslセキュリティテストを実行すると、「サポートされている安全なプロトコルはありません」と表示され、テスト結果が表示されません。
だから私の質問は、
IPアドレス用にロードするnginxに付属するデフォルトの構成で何をすべきですか?
「listen」コマンドでdefault_serverとして設定する必要があるserver_name(構成ファイル)?
現在https要求をサンプルドメインに転送しているIPで何をすべきですか?
意図した結果:-
https:// example.comはサーバーへの接続にのみ使用する必要があります。example.comはサーバー上のphpスクリプトで使用されるため、IPアドレスをロードすると「ページが見つかりません」または「禁止」と表示されます。
SSLテストでは、設定後、少なくともAの評価が必要です。
iPアドレスは接続を直接受け入れて処理するべきではありません。
これをデフォルトのサーバーブロックとして使用できます。
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
... SSL keys for default server ...
return 403;
}
これにより、Host:ヘッダーがサーバー上の他のどの仮想ホストとも一致しないHTTP接続は、403 Forbiddenエラーメッセージをクライアントに返します。
ここで、既存のホスト名と一致しないホスト名に有効なSSLキーを使用すると、クライアントは直接403エラーページを受け取ります。ここで自己署名証明書を使用すると、ユーザーは信頼できない証明書のエラーメッセージを受け取ります。
やっと使える解決策が見つかりました。 Quoraはこのようなことをします。デフォルトを404にリダイレクトします。
ソース: httpsの「デフォルト」nginxサーバーを適切に設定
デフォルト設定をこれに設定する。
server {
server_name _;
listen 80 default_server;
return 404;
}
server {
listen 443 ssl;
server_name _;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
return 404;
}
次に、存在しない場合はsslのディレクトリを作成します
Sudo mkdir -p /etc/nginx/ssl
次に、同じ用に自己署名したsslを作成します
Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
エラーを確認し、nginxをリロードして404を取得します
nginx -t
Sudo sytemctl reload nginx