![nginx: [警告] サーバー名が競合しています](https://rvso.com/image/726392/nginx%3A%20%5B%E8%AD%A6%E5%91%8A%5D%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%90%8D%E3%81%8C%E7%AB%B6%E5%90%88%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99.png)
このエラーが発生する理由がわかりません:
nginx: [警告] 0.0.0.0:80 の競合するサーバー名 "stage.mydomain.com" は無視されました nginx: [警告] 0.0.0.0:443 の競合するサーバー名 "stage.mydomain.com" は無視されました
私のサイト対応シンボリックリンク ファイルは次のようになります。私はこれについてあまり詳しくありませんが、サーバーについて知識があるのは私だけです。これは本番環境からコピーされたものです。ポート 80 と 443 が重複していますが、各ブロックに構成の違いがあります。
server {
listen 80;
server_name stage.mydomain.com;
return 301 https://stage.mydomain.com$request_uri$is_args;
}
server {
listen 80;
server_name stage.mydomain.com;
location '/.path/here' {
default_type "text/plain";
root /home/username/www/app_name/current/public;
}
return 301 https://stage.mydomain.com$request_uri$is_args;
}
server {
listen 443;
ssl on;
ssl_certificate /a/path/to/my/file.pem;
ssl_certificate_key /a/path/to/my/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
##ssl_ciphers HIGH:!aNULL:!MD5;
ssl_ciphers "randomstuffhere";
ssl_prefer_server_ciphers on;
client_max_body_size 32000M;
server_name stage.mydomain.com;
return 301 https://stage.mydomain.com$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate /a/path/to/my/file.pem;
ssl_certificate_key /a/path/to/my/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
##ssl_ciphers HIGH:!aNULL:!MD5;
ssl_ciphers "randomstuffhere";
ssl_prefer_server_ciphers on;
client_max_body_size 32000M;
server_name stage.mydomain.com;
root /home/username/www/app_name/current/public; # <--- be sure to point to 'public'!
passenger_enabled on;
rails_env staging;
}
答え1
同じ server_name を使用する 2 つの server ステートメントを持つことはできません。両方が同じ仮想ホスト名を共有しているため、リクエストが来た場合に Nginx はどちらを使用するかわかりません。したがって、nginx は最初に一致したものを使用します。
設定スニレットから、ルートディレクトリはとにかくリダイレクトを実行しているため役に立たないので、2番目のサーバーポート80ステートメントを削除できるようです(これは最初のサーバーステートメントでも同じです)
また、最初のサーバー 443 ステートメントも削除します。これにより、リダイレクト ループが発生します。