#nginx
Вопрос:
У меня есть 3 приложения: 1 nodejs и 2 приложения для реагирования. Мой nginx.conf выглядит так:
#node-app is running on port 3001
upstream api {
server localhost:3001;
}
server {
listen 80;
listen [::]:80;
server_name _;
index index.html index.htm;
location /api {
rewrite /api /$1 break;
proxy_pass http://api;
}
#the first react app
location /admin {
root /home/ec2-user/admin/build;
try_files $1 index.html;
}
#the second react app
location / {
root /home/ec2-user/client/build;
try_files $uri /index.html;
}
Что происходит, так это то, что я могу перейти ко второму приложению react. Но когда я перехожу на страницу администратора, я получаю ошибку nginx:
The page you are looking for is not found.
Я также попытался объявить администратора таким образом:
location /admin/(.*) {
root /home/ec2-user/admin/build;
try_files $1 index.html;
}
Но тогда на странице ничего не отображается. Я подозреваю, что приложение № 2 берет верх, но, поскольку нет пути к «администратору», оно показывает пустую страницу.
Комментарии:
1. расположение ^~ /администратор/ { если (!-e $request_filename){ переписать ^(.*)$ /index.html прервать; } root /var/www/html/администратор/сборка/; }
Ответ №1:
Пожалуйста, добавьте
эти правила в nginx
#Первое приложение
location ^~ /admin/ {
if (!-e $request_filename){
rewrite ^(.*)$ /index.html break;
}
root /home/ec2-user/admin/build;
}
###Второе приложение
location ^~ /admin-page/ {
if (!-e $request_filename){
rewrite ^(.*)$ /index.html break;
}
root /home/ec2-user/client/build;
}
Комментарии:
1. Спасибо, но второе приложение должно быть в корне, что-то вроде: местоположение ^~ / Я попробовал, но оно все еще не отображает первое приложение.
2. Когда я захожу во второе приложение, я вижу эту ошибку в консоли: Ошибка синтаксиса: Неожиданный токен ‘
3. добавьте многопольный поддомен и используйте