문제는 버전 의존적 인 것 같습니다. 우분투 14.04 LTS에서 기본 nginx는 오래된 1.4입니다. 먼저 PPA 기반 버전을 설치해야합니다.
https://leftshift.io/upgrading-nginx-to-the-latest-version-on-ubuntu-servers
이 작업을 수행하는 방법을 보여줍니다.
sudo add-apt-repository ppa:nginx/stable
sudo aptitude safe-upgrade
당신은 결국
nginx -v
nginx version: nginx/1.8.0
@ xatr0z의 구성은 https://serverfault.com/a/636455/162693 에서 http://www.senginx.org/en/index.php/Proxy_HTTPS_Client_Certificate
가 작동하지 않습니다.
작동하지 않는 제안
backend {
server some-ip:443;
}
server {
listen 80;
location / {
proxy_ssl_certificate certs/client.crt;
proxy_ssl_certificate_key certs/client.key;
proxy_pass https://backend;
}
}
1.8.0에서는 기본적으로 작동하지 않습니다. 아마도 힌트로만 사용되며 구성 파일로 사용되거나 다른 버전에 의존하지 않습니다.
SSL 및 자체 서명 클라이언트 인증서가 활성화 된 apache2 기반 백엔드 서버 A로 테스트하고 있습니다. Apache config SSLOptions는 다음과 같이 설정됩니다.
SSLOptions +ExportCertData +FakeBasicAuth + StdEnvVars
백엔드 측의 phpinfo () 스크립트가 서버 및 클라이언트 측 정보를 표시하므로 상황을 쉽게 디버깅 할 수 있습니다.
이것을 확인하기 위해 내가 사용한 :
https : // backend / test / phpinfo
브라우저에 SSL 인증서가 설치되어 있고 서버 인증서의 경우 SSL_SERVER_S_DN_CN 및 클라이언트 인증서의 경우 SSL_CLIENT_S_DN_CN과 같은 섹션이 있습니다.
첫 번째 시작으로 프론트 엔드 서버 B에서 nginx를 구성하기 위해 괄호 안에 부품을 채우십시오.
server {
listen 8080;
server_name <frontend>;
location / {
proxy_buffering off;
proxy_pass https://<backend>;
#proxy_ssl_certificate certs/<SSL Client Certificate>.crt;
#proxy_ssl_certificate_key certs/<SSL Client Certificate>.key;
}
}
리버스 프록시 자체가 작동하는지 확인하기 위해 SSL 클라이언트 인증서 특정 부분의 주석을 해제하십시오.
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart
nginx stop/waiting
nginx start/running, process 8931
이제 http : // frontend : 8080 / test / phpinfo.php 작동
서버 인증서의 SSL_SERVER_S_DN_CN이 표시되고 클라이언트 인증서의 SSL_CLIENT_S_DN_CN 이 (아직) 표시되지 않습니다
주석 해제 후 :
server {
listen 8080;
server_name <frontend>;
location / {
proxy_buffering off;
proxy_pass https://<backend>;
proxy_ssl_certificate certs/<SSL Client Certificate>.crt;
proxy_ssl_certificate_key certs/<SSL Client Certificate>.key;
}
}
확인 / 다시 시작
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
service nginx restart
nginx stop/waiting
nginx start/running, process 8931
http : // frontend : 8080 / test / phpinfo.php 작동 및
서버 인증서의 SSL_SERVER_S_DN_CN이 표시되고 클라이언트 인증서의 SSL_CLIENT_S_DN_CN 이 표시됩니다.
이제 요청한대로 작동합니다.
버그 https://trac.nginx.org/nginx/ticket/872#ticket