Поддомен с подстановочными знаками и конкретная конфигурация поддомена c на одном сервере Nginx - PullRequest
0 голосов
/ 17 июня 2020

Я настроил сервер поддоменов с подстановочными знаками для моего PHP app1 домена, например *.domain.com в конфигурации Nginx по умолчанию. Мой app1 работал, если кто-то набирал x.domain.com или y.domain.com, все было в порядке.

Когда я настраиваю другой виртуальный хост для указанного c субдомена в этом домене specific.domain.com для app2. После этого, когда я набираю x.domain.com, он показывает мне app2, но я хотел показать app2 только для определенных c .domain.com и app1 для * .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;
    }
}

1 Ответ

0 голосов
/ 19 июня 2020

Просто решил эту проблему, чтобы добавить еще 1 серверный блок и взять сначала specific.domain.com, затем *.domain.com. И я оставляю блок сервера по умолчанию пустым

Вот мой пример кода

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

...