
私のサイトは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 番目のブロックで提供されるはずです。説明どおりに動作しない場合は、ロードされていないことが原因である可能性があります。
- ここで示したすべての設定がnginxによって検出/ロードされていることを確認してください
nginx -t
構成を検証するために使用します- 送信時にエラーログを監視します
HUP
信号nginxマスタープロセスにエラーメッセージが表示されないか確認する - 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;
}