У меня проблемы с настройкой блоков местоположения в Nginx. У меня есть три проекта / каталога на моем сервере, которые я хочу обслуживать в одном домене. Два реагирующих и один сервер nodeJS.
Я хочу добиться:
/check
Я хочу, чтобы это было передано в приложение nodeJS (оно тоже работает нормально)/check
или корневой домен, чтобы загрузить другое приложение React. (Это не работает)Вот что у меня сейчас есть:
server {
root /var/www/landing/public;
index index.html index.htm index.nginx-debian.html;
server_name domain.com www.domain.com;
location / {
try_files $uri $uri/ =404;
}
location /(?<something>.*)/ {
alias /var/www/react-frontend/build/;
index index.html index.htm;
}
location /check/ {
proxy_pass http://localhost:3001/;
}
}
Надеюсь, я смог все четко объяснить. Спасибо.
Вот пример конфигурации.
server {
listen 127.0.0.1:8088;
location / {
content_by_lua_block {
ngx.say("root")
ngx.exit(ngx.HTTP_OK)
}
}
location ~* "^\/check(.*)$" {
content_by_lua_block {
ngx.say("check")
ngx.exit(ngx.HTTP_OK)
}
}
location ~* "^\/(.*)\/+(.*)$" {
content_by_lua_block {
ngx.say("all other")
ngx.exit(ngx.HTTP_OK)
}
}
}
А вот и тесты:
# curl 127.0.0.1:8088
root
# curl 127.0.0.1:8088/
root
# curl 127.0.0.1:8088/ll
root
# curl 127.0.0.1:8088/ll/
all other
# curl 127.0.0.1:8088/check
check
# curl 127.0.0.1:8088/check/
check
Я считаю, что вы можете сделать что-то вроде этого:
location = / {
index block
}
location = /check/ {
check block }
location ~* ".*" {
all others block
}
поскольку точное совпадение имеет приоритет над совпадением регулярного выражения. Это работает для вас?