Я хочу развернуть свое приложение для реагирования на nginx
на одном сервере, обслуживая разные html для разных мест, я пробовал конфигурацию ниже, но у меня это не сработало
server {
listen 8080;
# root /usr/share/nginx/build-bms;
# Add index.php to the list if you are using PHP
server_name _;
location ^~ /portal1/ {
root PATH_TO_BUILD_FOLDER_ONE;
try_files $uri /index.html;
index invalid;
add_header Cache-Control public;
expires 1d;
autoindex on;
}
location ^~ /portal2/ {
root PATH_TO_BUILD_FOLDER_TWO;
try_files $uri /index.html;
add_header Cache-Control public;
index invalid;
expires 1d;
break;
autoindex on;
}
location / {
root PATH_TO_BUILD_FOLDER_THREE;
try_files $uri /index.html;
add_header Cache-Control public;
expires 1d;
}
}
Каждый раз подается только последний
Не будучи специалистом по nginx, я проверил свою конфигурацию и предложил удалить совпадение регулярного выражения (если оно вам не нужно) и преобразовать вашу конфигурацию в:
server {
listen 8080;
root /usr/share/nginx/build-bms;
# Add index.php to the list if you are using PHP
server_name _;
location ^~ /portal1/ {
alias /usr/share/nginx/portal1/;
try_files $uri /index.html index.php;
index invalid;
add_header Cache-Control public;
expires 1d;
autoindex on;
}
location ^~ /portal2/ {
alias /usr/share/nginx/portal2/;
try_files $uri /index.html index.php;
add_header Cache-Control public;
index invalid;
expires 1d;
break;
autoindex on;
}
location / {
alias /usr/share/nginx/portal3/;
try_files $uri /index.html index.php;
add_header Cache-Control public;
expires 1d;
}
}
Вместо использования нескольких корней я бы использовал псевдоним. Но я бы всегда указывал корневой элемент для сервера, а затем работал бы с псевдонимами. Я бы оставил это на усмотрение профессионалов nginx.