Доступ к WSO2-APIM с помощью Nginx

Я получаю доступ к своему wso2 apim, магазину и издателю с помощью Nginx. и хотите получить доступ, используя следующее:

  1. wso2 api manager для доступа с использованием URL-адреса nginx как: https://nginx-ip/wso2am/carbon

  2. wso2 store, к которому можно получить доступ с помощью URL-адреса nginx: https://nginx-ip/wso2am/store

  3. wso2 store для доступа с использованием URL-адреса nginx как: https://nginx-ip/wso2am/publisher

Я попытался использовать вложенный блок местоположения внутри блока местоположения, но безуспешно. Итак, теперь я работаю, имея блок местоположения для всех из них по отдельности, но он также не работает.

Вот мой файл конфигурации nginx для магазина:

location /wso2am/store/ 
   {
     proxy_set_header   Host                $host;
     proxy_set_header   X-Real-IP           $remote_addr;
     proxy_set_header   X-Forwarded-Host    $host;
     proxy_set_header   X-Forwarded-For     $proxy_add_x_forwarded_for;

     proxy_pass https://wso2-ip:9443/store/;

     proxy_redirect https://$http_host/store/ /wso2am/store/;

     proxy_cookie_path / /wso2am/;

     limit_rate 25M;
     #limit_req zone=wso2am burst=100 nodelay;
   }

Для указанной выше конфигурации графический интерфейс для магазина не отображается должным образом.

введите здесь описание изображения

Аналогично для издателя и углерода (для консоли управления apim). А вложенная конфигурация nginx выглядит следующим образом:

   location /wso2am/ {
         location /wso2am/store/
            {
            proxy_set_header   Host                $host;
            proxy_set_header   X-Real-IP           $remote_addr;
            proxy_set_header   X-Forwarded-Host    $host;
            proxy_set_header   X-Forwarded-For     $proxy_add_x_forwarded_for;

            proxy_pass https://wso2-ip:9443/store/;

            proxy_redirect https://$http_host/oauth2/callback /oauth2/callback;
            proxy_redirect https://$http_host/ /wso2am/store/;
            proxy_redirect https://$http_host/wso2am/ /wso2am/store/;


            proxy_redirect https://$http_host/store/ /wso2am/store/;

            proxy_cookie_path / /wso2am/;

            limit_rate 25M;

         }
   }

Где мне нужно изменить заголовки или любое другое место, чтобы все было правильно?


Обновление 1:

Мой магазин wso2am и издатель работают после включения комментариев и использования следующей конфигурации nginx:

   location /wso2am/ {

            proxy_set_header   Host                $host;
            proxy_set_header   X-Real-IP           $remote_addr;
            proxy_set_header   X-Forwarded-Host    $host;
            proxy_set_header   X-Forwarded-For     $proxy_add_x_forwarded_for;

            proxy_pass https://wso2-apim-ip:9443/;
            proxy_redirect https://$http_host/carbon/ /wso2am/carbon/;
            proxy_redirect https://$http_host/store/ /wso2am/store/;
            proxy_redirect https://$http_host/publisher/ /wso2am/publisher/;


            proxy_cookie_path / /wso2am/;

           }

Примечание: но, используя приведенную выше конфигурацию, я вхожу в apim-carbon, я вхожу в систему, а затем, если я нажимаю на любой из параметров на домашней странице, например список, добавляю. Я выхожу из системы и причина этого после расследования был ли токен CSRF не отправляется в запросе при доступе к нему с помощью Nginx.

Как можно решить проблему csrfprevention.js, сохранив ее истинность?


person Timshrok    schedule 24.01.2019    source источник
comment
попробуйте отредактировать <ProxyContextPath>/wso2am</ProxyContextPath> в /repository/conf/carbon.xml   -  person zar3bski    schedule 30.10.2019


Ответы (2)


Заявитель: это неполный ответ, так как я сам копаюсь в этом вопросе

Я столкнулся с той же проблемой как с wso2am, так и с wso2ei. Я почти уверен, что нам нужно отредактировать /repository/conf/carbon.xml в этом разделе (я должен признать, что комментарии не совсем ясны):

<!--
       Webapp context root of WSO2 Carbon management console.
    -->
    <WebContextRoot>/wso2am</WebContextRoot>

<!--
        Proxy context path is a useful parameter to add a proxy path when a Carbon server is fronted by reverse proxy. In addition
        to the proxy host and proxy port this parameter allows you add a path component to external URLs. e.g.
            URL of the Carbon server -> https://10.100.1.1:9443/carbon
        URL of the reverse proxy -> https://prod.abc.com/appserver/carbon

    appserver - proxy context path. This specially required whenever you are generating URLs to displace in
    Carbon UI components.
    -->

        <MgtProxyContextPath>/</MgtProxyContextPath> 
        <ProxyContextPath>/wso2am</ProxyContextPath>

Следующее работает, если ваш Nginx прослушивает 443 в режиме SSL (не может сделать это с HTTP из-за перенаправлений -> создайте самоподписанный сертификат, если вы планируете использовать его в локальной сети)

    location /wso2am {
        proxy_pass https://wso2_apimanager_container:9443;
        proxy_set_header   Host                $host;
        proxy_set_header   X-Real-IP           $remote_addr;
        proxy_set_header   X-Forwarded-Host    $host;
        proxy_ssl_verify   off;
        proxy_set_header   X-Forwarded-For     $proxy_add_x_forwarded_for;
        }

        location /wso2am/store {
            proxy_pass https://wso2_apimanager:9443/store;
        }
        location /wso2am/publisher {
            proxy_pass https://wso2_apimanager:9443/publisher;
        }
        location /wso2am/admin {
            proxy_pass https://wso2_apimanager:9443/admin;
        }
    }

Это работает, но я не совсем понимаю, почему. Может кто-нибудь объяснить мне, чем <MgtProxyContextPath> отличается от </MgtProxyContextPath> и от <WebContextRoot>?

разрешить прокси для администратора, издателя и магазина: чтобы сделать /publisher, /store и /admin доступными, вам необходимо отредактировать конец их соответствующего site.json, расположенного в /repository/deployment/server/jaggeryapps/name_of_the_service/site/conf/site.json. Для /publisher вы должны написать:

"reverseProxy" : {
        "enabled" : "auto",    // values true , false , "auto" - will look for  X-Forwarded-* headers
        "host" : "some.ip.or.domain", // If reverse proxy do not have a domain name use IP
        "context":"/wso2am/publisher",
      //"regContext":"" // Use only if different path is used for registry
    },

Все еще есть проблема с входом в систему

person zar3bski    schedule 30.10.2019

Вы можете следовать этому руководству [1], чтобы настроить WSO2 API Manager с Nginx.

[1] - https://docs.wso2.com/display/AM260/Configuring+the+Proxy+Server+and+the+Load+Balancer

person Pubci    schedule 25.01.2019
comment
Я последовал тому же руководству, но после этого мое базовое приложение wso2-apim перенаправляется на IP-адрес обратного прокси, поэтому не может получить доступ к базовому IP-адресу, как раньше. - person Timshrok; 25.01.2019
comment
Вы установили имя хоста в carbon.xml? docs.wso2.com/display/AM260/Changing+the+Hostname - person Pubci; 25.01.2019
comment
имя хоста должно быть машиной, на которой запущен wso2-apim? - person Timshrok; 25.01.2019
comment
Pubci, после выполнения шагов, указанных в URL-адресе, не работает. Я обновил обновление в сообщении. - person Timshrok; 28.01.2019
comment
Привет, @Pubci, я все еще не могу настроить консоль управления углеродом с помощью nginx, а магазин и издатель хорошо работают с nginx. Можете предложить мне какие-нибудь настройки? - person Timshrok; 22.04.2019