Обратный прокси Nginx для nextjs и response-admin - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть приложение, написанное на nextjs, потому что мне нужен SSR.Так как мне не нужен SSR на стороне администратора, я бы хотел использовать response-admin.Я не собираюсь объединять их, но вместо этого они будут запускаться как отдельные процессы / сервисы на отдельных портах, а nginx будет выполнять прокси-маршрутизацию.У меня возникли трудности в настройке реакции-администратора.

  • nextjs, работающий на 127.0.0.1:3000
  • act-admin, работающий на 127.0.0.1:3001

Конфигурация расположения обратного прокси-сервера nginx:

server {
    server_name www.mydomainname.com;

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;


    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect off;
     }

    location /admin {
        proxy_pass http://127.0.0.1:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect off;
     }

     # 301 Redirect URLs with trailing /'s
     #as per https://webmasters.googleblog.com/2010/04/to-slash-or-not-to-slash.html
     rewrite ^/(.*)/$ /$1 permanent;


     # 301 redirect from custom redirect file
     if ( $redirect_uri ) {
        return 301 $redirect_uri;
     }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mydomiainname.com/fullchain.pem # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomainname.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

Я считаю, что конфигурация nginx верна.При переходе к / admin реагирует-администратор отвечает пустой страницей «React App» вместо страницы по умолчанию, видимой из его корневого пути, «/», пути.

Я попытался установить 'homepage': "/ admin" в файлеact-app package.json без всякой радости.

Как настроить реагирующее приложение на обслуживание страниц по умолчанию для / admin вместо /?

1 Ответ

0 голосов
/ 09 февраля 2019

Возможно, проблема в том, что путь, проксированный к react-admin, равен /admin вместо /.Чтобы избежать этого, вы хотите добавить косую черту / в конец вашего proxy_pass URL:

location /admin {
    proxy_pass http://127.0.0.1:3001/;
    ...
}

Это объясняется в разделе proxy_pass документации Nginx.хотя по общему признанию язык немного эзотеричен:

Если директива proxy_pass указана с URI, то когда запрос передается на сервер, часть нормализованного URI запроса, соответствующая местоположению, равназаменяется на URI, указанный в директиве:

location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}

Если proxy_pass указан без URI, URI запроса передается на сервер в той же форме, что и отправленный клиентом при обработке исходного запроса,или полный URI нормализованного запроса передается при обработке измененного URI:

location /some/path/ {
    proxy_pass http://127.0.0.1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...