Apache Mod 프록시는 프록시 서버와 다른 문자 세트를 사용합니다.

Apache Mod 프록시는 프록시 서버와 다른 문자 세트를 사용합니다.

저는 mod_proxy를 사용하여 Apache2 서버 뒤의 포트 8080에서 Java 웹 애플리케이션인 jenkins를 실행하고 있습니다.

+---------------+              +----------------+
|    apache2    |    ----->    |  jenkins:8080  |    
+---------------+              +----------------+

Jenkins에 직접 액세스할 때, 예를 들어http://myhost:8080/결과는 정상적으로 보입니다(모든 문자가 올바르게 인코딩됨).

Jenkins 직접 액세스

하지만 아파치 프록시를 통해 시도해 보면 다음과 같습니다.

apache2 모드 에이전트 뒤에 있는 젠킨스

내 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를 새 서버로 옮겼습니다.

관련 정보