簡體   English   中英

Wildfly Java 使用 Nginx 作為反向代理的應用程序不加載 UI

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM