﻿# Настройка Nginx для внешнего портала

> [HTML Version](nginx-external-portal.html)

В данной статье рассматривается пример настройки Nginx для доступа к внешнему порталу по выделенному доменному имени через обратный прокси.

````
Начало внимание

````
Перед началом настройки включите и активируйте [внешний портал](service-portal.md).

````
Конец внимание

````
Также рекомендуем настроить Nginx для работы ELMA365 через обратный прокси в соответствии с инструкцией, представленной в статье [«Настройка Nginx для работы ELMA365 через обратный прокси»](nginx-elma365-.md).

Для примера используются следующие данные: 

- **/\_portal/zakazy** — название раздела с включённым порталом; 

- **portal-elma365client.domain.com** — доменное имя внешнего портала; 

- **elma365client.domain.com** — доменное имя приложения ELMA365;

- **192.168.1.10** — IP-адрес сервера с приложением ELMA365.

Ниже представлены две конфигурации обратного прокси для доступа к внешнему порталу по выделенному домену на примере Nginx:

Конфигурация Nginx для проксирования на HTTP-сервер (Kubernetes)

````
server \{  
    listen 80;  
    server\_name portal-elma365client.domain.com;  
    return 301 https://\$server\_name\$request\_uri;  
\}  
  
server \{  
    listen 443 ssl http2;  
    server\_name portal-elma365client.domain.com;  
    set \$elma365\_host elma365client.domain.com;  
    ssl\_certificate /etc/letsencrypt/live/portal-elma365client.domain.com/fullchain.pem;  
    ssl\_certificate\_key /etc/letsencrypt/live/portal-elma365client.domain.com/privkey.pem;  
  
    proxy\_http\_version 1.1;  
    proxy\_cache\_bypass \$http\_upgrade;  
  
    proxy\_set\_header Upgrade \$http\_upgrade;  
    proxy\_set\_header Connection "upgrade";  
    proxy\_set\_header Host \$elma365\_host;  
    proxy\_set\_header X-Real-IP \$remote\_addr;  
    proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for;  
    proxy\_set\_header Origin https://\$host;  
  
    proxy\_set\_header Accept-Encoding "";  
    sub\_filter\_types \*;  
    sub\_filter\_once off;  
    sub\_filter '\$elma365\_host' '\$host';  
  
    # для работы с SAML потребуется редирект  
    proxy\_redirect http://\$elma365\_host https://\$host;  
  
    location / \{  
        return 301 /\_portal/zakazy;  
    \}  
  
    location = /index.html \{  
        return 301 /\_portal/zakazy;  
    \}  
  
    location /\_portal/zakazy \{  
        proxy\_pass http://192.168.1.10/\_portal/zakazy;      
\}  
  
    location ~\* ^.+.(jpg|jpeg|gif|png|svg|ico|js|woff|woff|woff2|css|po)\$ \{  
        proxy\_pass http://192.168.1.10;      
\}  
  
    location /ws \{  
        proxy\_pass http://192.168.1.10;      
\}  
  
    location /api \{  
        proxy\_pass http://192.168.1.10;      
\}  
  
    location /s3elma365 \{  
        proxy\_pass http://192.168.1.10;      
\}  
  
    location /guard \{  
        proxy\_pass http://192.168.1.10;      
\}  
  
    location /assets \{  
        proxy\_pass http://192.168.1.10;      
\}  
\}
````

````
Конфигурация Nginx для проксирования на HTTPS-сервер (Kubernetes)

````
server \{  
    listen 80;  
    server\_name portal-elma365client.domain.com;  
    return 301 https://\$server\_name\$request\_uri;  
\}  
  
server \{  
    listen 443 ssl http2;  
    server\_name portal-elma365client.domain.com;  
    set \$elma365\_host elma365client.domain.com;  
    ssl\_certificate /etc/letsencrypt/live/portal-elma365client.domain.com/fullchain.pem;  
    ssl\_certificate\_key /etc/letsencrypt/live/portal-elma365client.domain.com/privkey.pem;  
  
    proxy\_http\_version 1.1;  
    proxy\_cache\_bypass \$http\_upgrade;  
  
    proxy\_set\_header Upgrade \$http\_upgrade;  
    proxy\_set\_header Connection "upgrade";  
    proxy\_set\_header Host \$elma365\_host;  
    proxy\_set\_header X-Real-IP \$remote\_addr;  
    proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for;  
    proxy\_set\_header Origin https://\$host;  
  
    proxy\_set\_header Accept-Encoding "";  
    sub\_filter\_types \*;  
    sub\_filter\_once off;  
    sub\_filter '\$elma365\_host' '\$host';  
  
    # для работы с SAML потребуется редирект  
    proxy\_redirect https://\$elma365\_host https://\$host;  
  
    location / \{  
        return 301 /\_portal/zakazy;  
    \}  
  
    location = /index.html \{  
        return 301 /\_portal/zakazy;  
    \}  
  
    location /\_portal/zakazy \{  
        proxy\_pass https://192.168.1.10/\_portal/zakazy;      
\}  
  
    location ~\* ^.+.(jpg|jpeg|gif|png|svg|ico|js|woff|woff|woff2|css|po)\$ \{  
        proxy\_pass https://192.168.1.10;      
\}  
  
    location /ws \{  
        proxy\_pass https://192.168.1.10;      
\}  
  
    location /api \{  
        proxy\_pass https://192.168.1.10;      
\}  
  
    location /s3elma365 \{  
        proxy\_pass https://192.168.1.10;      
\}  
  
    location /guard \{  
        proxy\_pass https://192.168.1.10;      
\}  
  
    location /assets \{  
        proxy\_pass https://192.168.1.10;      
\}  
\}
````

````
В процессе установки или при реконфигурации в поле **Enter host** пропишите внешний домен **elma365client.domain.com**, по которому будет доступна ELMA365, и включите параметр **SSL termination**.

````
Начало примечание

````
**Примечание**

Для работы веб-сокетов в приложении обязательны параметры:

- **proxy\_http\_version 1.1** 

- **proxy\_set\_header Upgrade \$http\_upgrade**

- **proxy\_set\_header Connection "upgrade"**

Для работы директивы **sub\_filter** в Nginx включите модуль **ngx\_http\_sub\_module**.

````
Конец примечание
````