О доменных именах второго уровня, соответствующих блокам сервера nginx

Существует 2 доменных имени второго уровня и 2 соответствующих папки, например:

domain name folder 111.aa.com /var/www/111.aa.com 222.aa.com /var/www/222.aa.com 

В nginx.conf имеется 2 блока сервера, например:

# 111.aa.com

 server { listen 80; server_name 111.aa.com; charset utf-8; #access_log /var/log/nginx/log/host.access.log main; location / { root /var/www/111.aa.com; index index.php index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} location ~ \.php$ { root /var/www/111.aa.com; fastcgi_pass unix:/dev/shm/php-fpm.sock; try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } 

# 222.aa.com

 server { listen 80; server_name 222.aa.com; charset utf-8; #access_log /var/log/nginx/log/host.access.log main; location / { root /var/www/222.aa.com; index index.php index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} location ~ \.php$ { root /var/www/222.aa.com; fastcgi_pass unix:/dev/shm/php-fpm.sock; try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } 

Вопросов:

  1. Требуется ли два блока сервера? Если есть 100 доменных имен второго уровня, я должен написать 100 серверных блоков, нормально ли писать в одном блоке сервера? Как писать в одном блоке сервера? Есть ли пример?

  2. Запись в одном блоке сервера и запись в соответствующих 100 серверных блоках, какая из них лучше?

Вы можете сделать что-то вроде ниже:

 server { server_name *.aa.com; root /var/www/$http_host; location / { try_files $uri $uri/ 404=@redirect; } location @redirect { return 301 http://aa.com; } } 

Поскольку домены не могут содержать «..» или «/», Nginx защитит вас от некорректных доменов, которые могут быть использованы для установки неправильного корневого местоположения, просто отвергая недопустимые имена доменов, поэтому безопасность здесь не должна быть большой проблемой.