Я пытаюсь запустить два отдельных сайта на одном сервере с помощью 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;