[英]Wildfly Java Application with Nginx as Reverse Proxy don't load UI
我有一個雲服務器,上面安裝了 Widfly web 服務器,並使用 Nginx 作為反向代理。 如果我現在通過IP地址+端口+應用名稱(ipadress:8080/webapp)直接調用部署在Widfly上的應用,一切正常加載
但是,如果我使用沒有端口的 ip 地址並因此使用反向代理,則 UI 不會加載。 選項卡 header 仍然與應用程序中定義的 satrpage 匹配。 在 Firefox 的控制台中,我收到以下兩條錯誤消息:
由於不允許的 MIME 類型(“text/html”),從“https://ipadress/VAADIN/build/vaadin-bundle-8b9f3384a0c9fa4e9000.cache.js”加載模塊被阻止
Uncaught (in promise) TypeError: ServiceWorker script at https:///sw.js for scope https:/// 在安裝過程中遇到錯誤。
和一個 404 用於加載圖像的 GET 請求:
https://ipadress/webapp/icons/icon-512x512.png
我的 Nginx widlfly.conf(路徑:/etc/nginx/conf.d/)文件如下所示:
upstream wildfly {
# List of Widlfly Application Servers
server <ipadress+port>;
}
server {
listen 80;
server_name <ipadress>;
# Redirect all HTTP to HTTPS
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name ipadress;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/planyourplaylist.com.key;
ssl_session_cache shared:SSL:1m;
ssl_prefer_server_ciphers on;
# when user requests /
location = / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://<ipadress+port>/webapp/;
}
}
nginx.conf(路徑:/etc/nginx/)文件如下所示:
http {
include /etc/nginx/conf.d/*.conf;
proxy_cache_path /tmp/NGINX_cache/ keys_zone=backcache:10m;
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/sites-enabled/*;
}
我不確定是HTTP到HTTPS的重定向還是Nginx不理解的項目的WAR部署結構。
我為我糟糕的英語道歉,並感謝所有花時間幫助我的人。
解決方案就像問題一樣簡單。 問題的原因只是對nginx的錯誤理解。 根據我的理解,我會使用 Nginx 來回答請求的 URL 並將它們重定向到我期望的位置。 但事實並非如此。 如果我現在理解正確的話,Nginx 是指 URL 給出的值並在鏈接服務器中設置。
示例:如果我有一個部署名稱為/start的 webapp,則 Nginx 也必須將其設置為
位置/開始{...}
如果我將位置設置為
地點 /{...}
並將 Proxy_Pass 設置為
本地主機:8080/開始
,nginx 通過proxy_pass 值中的/start 找到服務器的正確頁面,但是服務器沒有正確的文件加載頁面。 所以widlfly在頁面“ / ”的目錄中搜索,而不是在頁面“ /start ”的目錄中搜索。
因此,我通過 web.xml 將 url 設置為“ / ”(它也可以通過 Vaadin Javax serverlet 工作)。 所以現在我可以給 nginx
地點 / {...}
並將被重定向到正確的頁面。
再次感謝@Marco C 的幫助。 我希望我也可以讓 Nginx 對其他人更清楚一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.