Я ищу дни, как настроить nginx для работы с моим приложением, но это почти невозможно.
что я хотел бы сделать
запустить мое приложение, используя nginx (v = 1.14) в качестве обратного прокси.Мое приложение - это веб-приложение, написанное на vaadin (v = 7.6.0) и развернутое с использованием Wildfly (v = 10).Мы используем keycloak для аутентификации (v = 4.5.0).
Проблема
, когда я перехожу на URL своего приложения, меня перенаправляют на keycloak дляаутентификация.Затем я могу пройти аутентификацию и зайти на мою веб-страницу, но затем я получил это сообщение об ошибке в виде баннера:
https://xxx/webuploader/VAADIN/vaadinPush.js?=v=7.6.0 не удалось загрузить.Push не будет работать
Действительно, я не нахожу vaadinPush.js в источнике веб-страницы (хотя я могу найти vaadinBootstrap.js).Но если я скопирую URL и аутентифицируюсь, я получу javascript от vaadin.
то, что я считаю причиной Я думаю, что что-то не так хорошо настроено между keycloak и nginx, что приводит к проблемепроверки подлинности, когда приложение пытается получить vaadinPush.js.
. Другая возможность заключается в том, что vaadinPush.js даже не запрашивается (его нет в консоли (например, 403/404/500 ...)
конфигурация
nginx.conf
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
server_name uploader.xxx.be;
listen 443; # HTTPS listening port
# SSL Certificates for Uploader.hospital.com
ssl_certificate ../conf/XXX.crt;
ssl_certificate_key ../conf/XXX.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://*hostname*:*port*/webuploader/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-Port 443; # must match listen port
proxy_cookie_path /webuploader/ /;
proxy_set_header Cookie $http_cookie;
}
location /webuploader/ {
proxy_pass http://*hostname*:*port*/webuploader/;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'X-Frame-Options' 'sameorigin';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-Port 443;
}
location /webuploader/webuploader/ {
proxy_pass http://*hostname*:*port*/webuploader/;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'X-Frame-Options' 'sameorigin';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-Port 443;
}
location /webuploader/PUSH {
proxy_pass http://*hostname*:*port*/webuploader/PUSH;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_buffering off;
proxy_ignore_client_abort off;
proxy_read_timeout 84600s;
proxy_send_timeout 84600s;
break;
}
}
server {
# Configuration for Keycloak
server_name auth.XXX.be; #Keycloak External URL
listen 443; # HTTPS listening port
# SSL Certificates for auth.hospital.com
ssl_certificate ../conf/XXX.crt;
ssl_certificate_key ../conf/XXX.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://10.32.1.157:8081/; #Keycloak internal URL
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'X-Frame-Options' 'sameorigin';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-Port 443; # must match listen port
proxy_cookie_path / /;
proxy_set_header Cookie $http_cookie;
}
location /webuploader/PUSH {
proxy_pass http://*hostname*:*port*/webuploader/PUSH;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_buffering off;
proxy_ignore_client_abort off;
proxy_read_timeout 84600s;
proxy_send_timeout 84600s;
break;
}
}
}
standalone.xml Keycloak
<http-listener name="default" socket-binding="http" enable-http2="true" proxy-address-forwarding="true" redirect-socket="https" />
standalone.xml от Wildfly
<realm name="XXX">
<auth-server-url>https://auth.XXX.be/auth/</auth-server-url>
<ssl-required>external</ssl-required>
</realm>
<http-listener name="default" socket-binding="http" enable-http2="true" proxy-address-forwarding="true" redirect-socket="https" />
настройка моего приложения в Keycloak
KeycloakКонфигурация
заранее большое спасибо всем вам :)