Nginx, обслуживается не тот сайт

Nginx, обслуживается не тот сайт

У меня есть сайт на IP 1.2.3.4

У моего провайдера доменов и onesite.com, и anothersite.com указывают на 1.2.3.4.

С помощью Nginx у меня настроено два сайта:

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; 
}

Связанный контент