Назад | Перейти на главную страницу

Невозможно запустить два отдельных сайта на одном сервере NGINX

Я пытаюсь запустить два отдельных сайта на одном сервере с помощью nginx. В зависимости от конфигурации nginx обслуживает тот или иной сайт под обоими доменными именами. Он не будет запускать каждый сайт в собственном домене.

Любые идеи? Спасибо!

Обновить: Я пробовал предложение Майкла Хэмптона, но сервер не запускается, когда есть две директивы server_name. Если я прокомментирую одно из них, nginx запускается, но работает только на одном веб-сайте.

Также service nginx configtest просто работает только с одним server_name, с двумя server_name не работает.

Следующие файлы конфигурации:

/ и т. д. / nginx / сайты-доступные / joomla

server {
    listen 80;
    server_name n-pix.com;

    root /var/www/n-pix;
    index index.php index.html index.htm default.html default.htm;

    error_log    /var/log/nginx/joomla.error.log info;

    # Support Clean (aka Search Engine Friendly) URLs
    location / {
            try_files $uri $uri/ /index.php?$args;
    }

    client_max_body_size 1024M;

    server_tokens off;

    # deny running scripts inside writable directories
    location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
            return 403;
            error_page 403 /403_error.html;
    }

    location ~ \.php$ {
        fastcgi_pass  unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # caching of files 
    location ~* \.(ico|pdf|flv)$ {
            expires 1y;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
            expires 14d;
    }

}

/ и т.д. / Nginx / сайты-доступные / jarbas

upstream unicorn {
  server unix:/tmp/unicorn.jarbas.sock fail_timeout=0;
}

server {
  listen 80;
  server_name jarbas.n-pix.com;

  root /home/deployer/apps/jarbas/current/public;

  error_log    /var/log/nginx/jarbas.error.log info;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 1G;
  keepalive_timeout 10;
}

После обновления файлов конфигурации я запустил nginx -t:

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
nginx: configuration file /etc/nginx/nginx.conf test failed

поэтому я добавил server_names_hash_bucket_size 64; к nginx.conf:

http {
    (...)

    server_names_hash_bucket_size 64;

    (...)
}

И теперь все работает хорошо. Спасибо, парни!

Вы перепутали свой listen и server_name директивы.

listen должен содержать порт (и, возможно, IP / IPv6-адрес), который должен прослушивать сервер.

server_name должен содержать имя хоста сервера.

Например (для этой конфигурации требуется nginx 1.3.4 или выше):

listen 80;
listen [::]:80;
server_name n-pix.com;

и

listen 80;
listen [::]:80;
server_name jarbas.n-pix.com;