저는 mod_proxy를 사용하여 Apache2 서버 뒤의 포트 8080에서 Java 웹 애플리케이션인 jenkins를 실행하고 있습니다.
+---------------+ +----------------+
| apache2 | -----> | jenkins:8080 |
+---------------+ +----------------+
Jenkins에 직접 액세스할 때, 예를 들어http://myhost:8080/결과는 정상적으로 보입니다(모든 문자가 올바르게 인코딩됨).
하지만 아파치 프록시를 통해 시도해 보면 다음과 같습니다.
내 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>
어쩌면 질문에 게시한 구성에 일부 오류가 포함되어 있을 수도 있습니다. 이전 서버에 이미 존재하기 때문에 이것을 사용하고 있습니다. Jenkins를 새 서버로 옮겼습니다.