2개의 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;
#}
}
질문:
두 개의 서버 블록이 필요합니까? 2차 도메인 이름이 100개가 있고 서버 블록을 100개 쓰고 싶은 경우 서버 블록 1개에 쓸 수 있나요? 서버 블록에 쓰는 방법은 무엇입니까? 어떤 예가 있습니까?
1개의 서버 블록을 쓰는 것과 각각 100개의 서버 블록을 쓰는 것 중 어느 것이 더 낫습니까?
답변1
다음과 같은 작업을 수행할 수 있습니다.
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는 잘못된 도메인 이름을 거부함으로써 잘못된 루트 위치를 설정하는 데 사용할 수 있는 잘못된 도메인 이름으로부터 사용자를 보호하므로 보안은 여기서 아무 것도 아닙니다. 큰 문제입니다.