我正在使用 mod_proxy 在 apache2 服务器后面的端口 8080 上运行 jenkins,一个 java web 应用程序。
+---------------+ +----------------+
| apache2 | -----> | jenkins:8080 |
+---------------+ +----------------+
当我直接访问詹金斯时,例如http://myhost:8080/结果看起来正常(所有字符都编码正确)。
但是当我通过 apache 代理尝试它时,它看起来像这样
我的 mod_proxy 配置是
SSLEngine on
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/ nocanon
ProxyPassReverse / http://localhost:8080/
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
SetOutputFilter proxy-html
SetOutputFilter INFLATE;proxy-html;DEFLATE
SetEnv proxy-nokeepalive 1
Header edit Location ^http://myhost/ https://myhost/
我的语言设置是
# echo $LANG
en_US.utf8
# echo $LC_ALL
en_US.utf8
有谁知道如何保持正确的字符集?
答案1
我按照以下解决了我的问题詹金斯文档
我确保所有模组都已启用
a2enmod proxy
a2enmod proxy_http
a2enmod headers
并使用了这个配置
ProxyPass /jenkins http://localhost:8081/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8081/jenkins
ProxyRequests Off
AllowEncodedSlashes NoDecode
# Local reverse proxy authorization override
# Most unix distribution deny proxy by default (ie /etc/apache2/modsenabled/proxy.conf in Ubuntu)
<Proxy http://localhost:8081/jenkins*>
Order deny,allow
Allow from all
</Proxy>
也许我在问题中发布的配置包含一些错误。我使用它是因为它已经存在于旧服务器上。我将詹金斯移至新服务器。