Reputation: 2398
I would like to host 2 different domains in the same server using Nginx. I redirected both domains to this host via @ property. Although I configure 2 different server blocks, whenever I try to access second domain, it redirects to first one.
Here is my config.
server {
listen `www.domain1.example:80`;
access_log `/var/log/nginx/host.domain1.access.log` main;
root `/var/www/domain1`;
server_name `www.domain1.example`;
location ~ \.php$ {
# Security: must set cgi.fixpathinfo to 0 in `php.ini`!
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass `127.0.0.1:9000`;
fastcgi_index `index.php`;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include `/etc/nginx/fastcgi_params`;
}
}
server {
listen www.domain2.example:80;
access_log /var/log/nginx/host.domain2.access.log main;
root /var/www/domain2;
server_name www.domain2.example;
location ~ \.php$ {
# Security: must set cgi.fixpathinfo to 0 in php.ini!
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include /etc/nginx/fastcgi_params;
}
}
How can I fix this?
Upvotes: 148
Views: 141502
Reputation: 25569
Your "listen" directives are wrong. See this page: http://nginx.org/en/docs/http/server_names.html.
They should be
server {
listen 80;
server_name www.domain1.example;
root /var/www/domain1;
}
server {
listen 80;
server_name www.domain2.example;
root /var/www/domain2;
}
Note, I have only included the relevant lines. Everything else looked okay but I just deleted it for clarity. To test it you might want to try serving a text file from each server first before actually serving PHP. That's why I left the 'root' directive in there.
Upvotes: 189