I had set up a wildcard subdomain server for my PHP app1
domain like *.domain.com
in Nginx default configuration. My app1
was serving if someone type x.domain.com
or y.domain.com
everything was fine.
When I set up another virtual host for a specific subdomain in this domain specific.domain.com
for app2
. After that, when I type x.domain.com it’s showing me app2
but I wanted to show app2 only for specific.domain.com and app1 for *.domain.com
server { # Set the port to listen on and the server name listen 80 default_server; server_name *.domain.com; # Set the document root of the project root /var/www/html/app1; # Set the directory index files index index.php index.html index.htm; # Specify the default character set charset utf-8; # Setup the default location configuration location / { try_files $uri $uri/ /index.php$is_args$args; } # Specify the details of favicon.ico location = /favicon.ico { access_log off; log_not_found off; } # Specify the details of robots.txt location = /robots.txt { access_log off; log_not_found off; } # Specify the logging configuration access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; sendfile off; client_max_body_size 128m; # Specify what happens when PHP files are requested location ~ .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors off; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; } # deny access to .htaccess files location ~ /.ht { deny all; } } server { listen 80; server_name specific.domain.com; root /var/www/html/app2; index index.html index.htm; charset utf-8; location / { try_files $uri $uri/ /index.html$is_args$args; } }
Advertisement
Answer
Just solved this problem to add more 1 server block and take specific.domain.com
first then *.domain.com
. And I leave the default server block blank
Here is my code example
server { listen 80 default_server; server_name *.domain.com; root /var/www/html; } server { listen 80; server_name specific.domain.com; root /var/www/html/app2; } server { listen 80; server_name *.domain.com; root /var/www/html/app2; }