перенаправление angular на серверное приложение на том же хосте

#django #angular #nginx #redirect

#django #angular #nginx #перенаправление

Вопрос:

У меня есть приложение с Angular во внешнем интерфейсе и Django во внутреннем интерфейсе на разных портах на одном хосте, и для аутентификации у меня есть этот фрагмент кода в моем userService.js:

 authenticateUser: function() {
                  return $window.location.href = 'https://myhost:backend_port/oidc/auth/request/'
            }, 
  

но когда я захожу в свое приложение, оно выдает мне «не удается ПОЛУЧИТЬ / oidc / auth / request /».
итак, я думаю, что интерфейс пытается справиться с этим, когда оно должно поступать на серверную часть.

Нужно ли мне добавлять ‘location’ в конфигурацию Nginx для серверной части? Вот моя текущая конфигурация:

     server {
    listen 9004;
    ssl on;
    ssl_certificate /etc/ssl/certs/chained.cer;
    ssl_certificate_key /etc/ssl/certs/key.key;
    error_page 497 https://$host:9004$request_uri;

    server_name myhost;
    error_log /var/log/nginx/error-9004.log error;
    client_max_body_size 2G;
    location / {
            proxy_pass https://myhost:3004;
    }

    location /static/ {
            root /path/to/backend/code;
    }

    location /media/ {
            root /path/to/media;
    }

    location /api {
            include uwsgi_params;
            uwsgi_pass unix:/run/uwsgi/myapp.sock;
    }
  

Обновить:

Я попытался добавить следующее в свою конфигурацию nginx:

    location /oidc {
           root /path/to/backend/code;
   }
  

и теперь я получаю 404. Но это должно быть покрыто моим urls.py:

 # openid requirement
url(r'^oidc/', include('oidc_rp.urls')),
  

вот oidc_rp.urls:

 urlpatterns = [
url(r'^auth/request/$', views.OIDCAuthRequestView.as_view(), name='oidc_auth_request'),
url(r'^auth/cb/$', views.OIDCAuthCallbackView.as_view(), name='oidc_auth_callback'),
url(r'^end-session/$', views.OIDCEndSessionView.as_view(), name='oidc_end_session'),
]
  

ОБНОВЛЕНИЕ 2:

интерфейс angular работает на pm2

Комментарии:

1. Вам не следует добавлять блок location для / oidc, эта часть маршрутизации должна обрабатываться вашим приложением django. Можете ли вы опубликовать свой полный файл nginx conf? У вас разные серверные блоки для портов клиента и сервера? Кроме того, я бы посоветовал не публиковать вашу фактическую структуру fodler на общедоступных сайтах.

2. спасибо, что ознакомили меня со структурой папок 🙂 Интерфейс работает на pm2, поэтому его нет в моей nginx conf. Добавлена остальная часть conf

3. я думаю, что 9004 — это внешний порт здесь. Какой у вас серверный порт? Есть ли у вас другой nginx conf, который прослушивает backend_port, или серверный порт доступен общедоступно? Глядя только на предоставленную конфигурацию, вы должны иметь возможность получить доступ к api следующим образом: myhost: 9004/api/oidc/auth/ request ( myhost: 9004 / api передается в django)

4. 9004 — это серверный порт, 3004 — порт интерфейса. позвольте мне попробовать это