Dinfyru
@Dinfyru
web-developer

Два проекта внутри одного домена nginx?

Имеется два проекта
1. Express
2. React

Они должны быть на одном домене по следующим путям.
`/` - express
`/admin/*` - react (все внутренние роут всегда должны проходить через /var/www/front/user/dist/index.html.)

nginx:
server {
        listen 80;
        listen [::]:80;

        server_name in.devo;
        root /var/www/front/user/dist;

        # react
        location /admin {
                alias /var/www/front/user/dist;
                try_files $uri $uri/ /index.html;

                location ~* /admin/.*\.(?:manifest|appcache|html?|xml|json)$ {
                        sendfile off;
                        expires off;
                }

                location ~* ^/admin/.*\.(?:css|js)$ {
                        try_files $uri =404;
                        expires 1y;
                        access_log off;
                        add_header Cache-Control "public";
                }

                location ~ ^/admin/.+\..+$ {
                        try_files $uri =404;
                }
        }


        # express
        location / {
                add_header Access-Control-Allow-Origin *;
                root /var/www/front/site;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://127.0.0.1:3000/;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

                proxy_redirect off;
                proxy_set_header   X-Forwarded-Proto $scheme;
        }

}


В текущей реализации почти всё нормально отрабатывает.
Однако если попробовать сделать запрос на `/admin/route` выдаёт 404 ошибку express.

Как сделать так, что бы `/admin/***` (без хардкода) смотрел всегда на нужный index.html?
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov
Web developer
Что именно находится в /var/www/front/user/dist/route ?
1. Если статика, то она должна скачиваться средствами nginx
2. Если include-файлы, то их надо перенести на уровень выше, чтобы не были доступны по http
3. Если этот запрос обрабатывается вашим приложением, которое дает ошибку, то, соответственно, надо исправить этот баг в приложении
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы