Nginx、間違ったサイトが提供される

Nginx、間違ったサイトが提供される

私のサイトはIP 1.2.3.4にあります

私のドメインプロバイダーでは、onesite.comとanothersite.comの両方が1.2.3.4を指しています。

Nginx では、次の 2 つのサイトが構成されています。

server {
    listen 1.2.3.4:80;
    server_name www.oneserver.com;
    rewrite ^(.*) http://onserver.com$1 permanent;
}

server {
    listen 1.2.3.4:80;
    server_name onserver.com;

    location / {
        fastcgi_pass 127.0.0.1:8878;

    [..]

そして:

server {
    listen 1.2.3.4:80;
    server_name myapp.anotherserver.com;

    location / {
        fastcgi_pass unix:/tmp/myapp.sock;

    [..]

myapp.anotherserver.comにアクセスすると、oneserver.comにリダイレクトされます

何か助けて?

答え1

user186340ご指摘のとおり、構成スニペットは適切で、myapp.anotherserver.comポートへのアクセス80は提供された 3 番目のブロックで提供されるはずです。説明どおりに動作しない場合は、ロードされていないことが原因である可能性があります。

  1. ここで示したすべての設定がnginxによって検出/ロードされていることを確認してください
  2. nginx -t構成を検証するために使用します
  3. 送信時にエラーログを監視しますHUP信号nginxマスタープロセスにエラーメッセージが表示されないか確認する
  4. nginx v1.9.2以降を使用している場合は、nginx -T読み込まれた設定を標準出力にダンプする

以下のすべてが正常である場合、実際に使用している構成と比較して、表示された構成が変更された可能性があります。

答え2

問題は、Nginx がデフォルトのサーバーを選択し、明示的にサーバーが定義されていないリクエストに対してそれを提供することです。私の回避策は、何もしないデフォルトのサーバーを定義することです。

# This just prevents Nginx picking a random default server if it doesn't know which
# server block to send a request to
server {
    # You can add 443/ssl if you need to
    listen      80 default_server; 
    server_name _;

    access_log off; log_not_found off;

    # "I'm a teapot", effectively "go away" https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error
    # Code 403 (forbidden), 410 (gone) or 501 (not implemented) is probably a better choice https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error
    return 418; 
}

関連情報