簡體   English   中英

我無法讓 tomcat 連接器與 apache 一起使用,“找不到 /jk-status 的匹配項”

[英]I'm unable to get tomcat connectors to work with apache "no match for /jk-status found"

我將一個 springboot 應用程序部署到 tomcat,我設法將它連接到數據庫,現在我可以通過瀏覽器訪問它。 例如:“www.mydomain.com:8080/spring_app/api/myendpoint”將返回 SQL 的值。

當然,現在我希望位於 apache 中的 angular 應用程序到達此后端。 由於只是訪問 (localhost:8080/localhost/127.0.0.1) 不起作用,我發現我需要一個連接器到 map 從 apache 到 tomcat 的某些請求。Tomcat 連接器就是為此而設計的。 由於我無法讓我的端點工作,我開始嘗試讓“jk-status”工作,這是默認的工作方式。 由於錯誤“找不到 /jk-status 的匹配項”,我仍然沒有成功。

Apache 顯然是在嘗試,因為我在 apache 的配置文件中定義為連接器的任何內容都會出現在上面顯示的錯誤中”。

我會附上我的配置,希望有人能幫助我,因為我從來沒有花這么長時間試圖解決問題而不是修復它。

-> 第一個文件(apache 配置文件):“包含 httpd-jk.conf”。

-> 第二個文件(apache2/sites-available/api.mydomain.com.conf):

        Require all granted
</Directory>
<VirtualHost *:80>
        ServerName api.mydomain.com
        ServerAlias www.api.mydomain.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/api.mydomain.com/html
        JkMount /jk-status/* jk-status

最后一行安裝了 jk-status 連接器,它應該顯示所有連接器的信息

-> 第三個文件(jk-status 的 html):在上面指定的文檔根目錄中,我有一個名為 jk-status 的文件,其中包含連接器配置。 (我不太了解這個文件,但我在某處看到過)。

worker.list=jk-status
worker.jk-status.type=status

-> 第四個文件(連接器配置先前包含在 apache 配置 httpd-jk.conf 中):

JkWorkersFile /opt/tomcat-connectors-1.2.48-src/conf/workers.properties

顯示 workers.properties 文件的正確路徑

-> 第五個文件(workers.properties 文件):

worker.list=jk-status
worker.jk-status.type=status
worker.jk-status.read_only=true

這是 jk-status 連接器的默認配置。

MOD_JK.LOG

[Mon Jan 09 14:15:58.963 2023] [31374:139970214833088] [debug] jk_servlet_normalize::jk_util.c (2184): URI on entering jk_servlet_normalize: [/jk-status]
[Mon Jan 09 14:15:58.963 2023] [31374:139970214833088] [debug] jk_servlet_normalize::jk_util.c (2278): URI on exiting jk_servlet_normalize: [/jk-status]
[Mon Jan 09 14:15:58.963 2023] [31374:139970214833088] [debug] map_uri_to_worker_ext::jk_uri_worker_map.c (1167): Attempting to map URI '/jk-status' from 1 maps
[Mon Jan 09 14:15:58.963 2023] [31374:139970214833088] [debug] find_match::jk_uri_worker_map.c (977): Attempting to map context URI '/jk-status/*=jk-status' source 'JkMount'
[Mon Jan 09 14:15:58.963 2023] [31374:139970214833088] [debug] jk_map_to_storage::mod_jk.c (4074): no match for /jk-status found

所有 apache 文件、workers.properties、httpd-jk.conf 都將 chown 設置為 www:data(apache 的用戶)。

我已經達到了可以訪問文檔根目錄中除名為“jk-status”的文件之外的任何文件的程度。 我想這是因為連接器正在嘗試至少看起來像進步的東西。

我錯過了什么,我對連接器的理解是否正確? 這是我需要的嗎?

謝謝你。

我嘗試配置 jk 連接器以將一些 apache 請求重定向到 tomcat

我知道您的 webapp 可以在http://www.example.com:8080/spring_app/api/myendpoint下訪問,現在您希望它也可以在http://www.example.com/spring_app/api/myendpoint下訪問.

根據您已有的,這是您需要做的。

首先,配置您的 VirtualHost 以讓 mod_jk 處理針對您的 webapp 的所有請求。

<VirtualHost *:80>
  ...
  # Let the worker named 'ajp13_worker' handle all requests
  # with a path beginning with '/spring_app/' 
  JkMount /spring_app/* ajp13_worker
  ...
</VirtualHost>

其次,在您的 workers.properties 中定義具有該名稱的 worker。

worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13

請注意您的版本的差異,特別是類型。 你想要的是ajp13 您使用的status是一種特殊類型的 worker,旨在獲取有關 mod_jk 本身的狀態信息。 (當然,端口和主機必須與 Tomcat 的server.xml中的連接器配置匹配,但默認啟用 8009 和本地主機。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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