私は現在、foo.domain.comのNginxで仮想ホストを実行しており、すべてがうまく機能しています。
追加したい新しいサブドメイン用の新しいファイルbar.domain.comを作成しました。両方に同じ設定を使用しています。
Nginxを再起動すると、
Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx.
Bar.domain.comにアクセスすると、表示されるはずのものが表示されますが、foo.domain.comにアクセスすると、bar.domain.comがリンクしているページが表示されます。
フー
upstream php-handler {
server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name foo.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate [path_foo]/cacert.pem;
ssl_certificate_key [path_foo]/privkey.pem;
root [path]/foo;
...
}
バー
server {
listen 80;
server_name bar.domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
ssl on;
ssl_certificate [path_bar]/cacert.pem;
ssl_certificate_key [path_bar]/privkey.pem;
root [path]/bar;
}
どこがいけないの?
あなたのhttpsブロックにはサーバー名も指定する必要があるようです(例:
server {
listen 443;
server_name bar.domain.com;
ssl on;
ssl_certificate [path_bar]/cacert.pem;
ssl_certificate_key [path_bar]/privkey.pem;
root [path]/bar;
}
誤ってサーバー名を重複させたときも、同様の問題がありました。
server_name myserver.example.com myserver.example.com;
これを次のように変更して修正しました:
server_name myserver.example.com;
/etc/nginx/sites-available/<site-name>
にリンクされている/etc/nginx/sites-enabled/<site-name>
に追加のファイルがある場合もあります。
これらのファイルの設定は、/etc/nginx/sites-available/default
ファイルと競合する可能性があります
また、_/etc/nginx/conf.d
_の各ファイルで重複がないか確認してください。
私の場合、_nginx -t
_はテストに合格しました-nginxを起動しようとすると、そのエラーメッセージが表示されました。
私の_/etc/nginx/sites-enabled
_ファイルにはドメイン(サーバー名)の重複がなく、_server_default
_への参照は1しかありませんでした(localhost
の重複はありません) )
代わりに、_conf.d
_に2つのファイルがあり、どちらも特定のドメインを参照していました(つまり、2つのファイルには、_servername mydomain.com
_のような行があり、ドメイン名の1つが2つのファイルにリストされていました)。
私の解決策:したがって、_conf.d
_内のすべてのファイルが特定のservername
(ドメイン名)値を一度だけ参照するようにしてください。最も。
(残念ながら上記の問題を修正した後、私は今得ます:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginxを再起動しようとするとエラーメッセージが表示されます。)
update:FYI、re:..._Address already in use
_上記のエラーメッセージ:
私がしなければならなかったのは_Sudo fuser -k 80/tcp
_だけでしたが、_service nginx restart
_は魅力のように機能しました!
ここで答えを見つけました: https://easyengine.io/tutorials/nginx/troubleshooting/emerg-bind-failed-98-address-already-in-use/
update2:
別のプロセスがポート80を使用していたことが示唆されています(これがkillが機能した理由であり、b/c nginxが実行していない )。
https://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already-in-use/52914/4
彼らはまた、プロセスを殺すだけでなく、プロセスを見ることが問題の原因についての洞察を提供するかもしれないと指摘しています。
したがって、次のいずれかを使用することをお勧めします:_Sudo fuser -k 80/tcp
_(-kオプションなし)、その後にそれらのプロセス番号のgrep
を続けます。
_systemctl list-unit-files
_出力、競合するプロセスに関する洞察を提供する可能性があります
または:
_fuser -kivn tcp 80
_、ここで:
_-v
_プロセスIDに加えてプロセス名を出力します
_-i
_殺す前にプロンプトを表示します
https://community.letsencrypt.org/t/nginx-emerg-bind-to-80-failed-98-address-already-in-use/52914/5
私の場合、重複を見つけることができませんでした。しかし、私はdefault.confを持っていました。ここで、サーバーの開始ブロックと終了ブラケットを除くすべての構成にコメントを付けました。これにより競合エラーが発生しました。
基本的に、問題を引き起こしたのはserver_nameディレクティブのないサーバーブロックの原因不明であり、重複したものではありませんでした。