
현재 상황에 대한 상위 수준 구성 예를 찾으려고 합니다. 여러 내부 IIS 서버에 있는 여러 하위 도메인에 대한 와일드카드 SSL 인증서가 있습니다.
site1.example.com (X.X.X.194) -> IISServer01:8081
site2.example.com (X.X.X.194) -> IISServer01:8082
site3.example.com (X.X.X.194) -> IISServer02:8083
하나의 서버 항목을 통해 들어오는 SSL 트래픽을 처리한 다음 특정 도메인을 내부 IIS 응용 프로그램에 전달하려고 합니다. 두 가지 옵션이 있는 것 같습니다.
각 하위 도메인에 대한 위치 섹션을 코딩합니다(내가 찾은 예에서 보면 지저분해 보입니다).
각 하위 도메인 호스트 이름에 대해 서로 다른 서버 항목으로 구성된 동일한 nginx 서버로 암호화되지 않은 트래픽을 다시 전달합니다. (적어도 이것은 옵션인 것 같습니다).
나의 궁극적인 목표는 SSL 트래픽의 대부분을 nginx를 통과하도록 통합하여 HAProxy를 사용하여 서버의 로드 밸런싱을 수행하는 것입니다.
Proxy_set_header 항목을 올바르게 설정하면 nginx 내에서 접근 방식 2가 작동합니까?
나는 최종 구성 파일 내에서 다음과 같은 내용을 구상합니다(접근 방법 #2 사용).
server {
listen Y.Y.Y.174:443; #Internally routed IP address
server_name *.example.com;
proxy_pass http://Y.Y.Y.174:8081;
}
server {
listen Y.Y.Y.174:8081;
server_name site1.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer01:8081;
}
server {
listen Y.Y.Y.174:8081;
server_name site2.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer01:8082;
}
server {
listen Y.Y.Y.174:8081;
server_name site3.example.com;
-- NORMAL CONFIG ENTRIES --
proxy_pass http://IISServer02:8083;
}
이것은 방법인 것 같지만 이것이 최선의 방법인지는 확실하지 않습니다. 이에 대한 더 간단한 접근 방식이 누락 되었습니까?
답변1
나는 다음과 같이 할 것입니다 (nginx 1.4.2로 테스트했는데 작동하는 것 같습니다):
server {
listen 127.0.0.1:443 ssl;
server_name site1.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.2:8081;
}
}
server {
listen 127.0.0.1:443 ssl;
server_name site2.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.2:8082;
}
}
server {
listen 127.0.0.1:443 ssl;
server_name site3.example.com;
include common.conf;
location / {
proxy_pass http://127.0.0.3:8083;
}
}
적어도 다음과 같습니다 common.conf
.
ssl on;
ssl_certificate /path/to/cert;
ssl_certificate_key /path/to/key;
답변2
믿거나 말거나 다음과 같이 할 수 있습니다.
ssl_session_cache shared:SSL:2m;
ssl_session_timeout 5m;
server {
listen Y.Y.Y.174:443 default_server ssl;
server_name _;
ssl_certificate /etc/pki/tls/certs/server.chained.crt;
ssl_certificate_key /etc/pki/tls/private/server.key;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site1.example.com;
[...]
proxy_pass http://IISServer01:8081;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site2.example.com;
[...]
proxy_pass http://IISServer01:8082;
}
server {
listen Y.Y.Y.174:443 ssl;
server_name site3.example.com;
[...]
proxy_pass http://IISServer02:8083;
}
포함되지 않으며 인증서는 메모리에 한 번만 로드되며 사용자가 하위 도메인에서 하위 도메인으로 이동할 때에도 세션이 캐시된 상태로 유지되므로 핸드셰이크 성능이 많이 절약됩니다.
그 외에는 문서를 찾을 수 없습니다.이 서버 오류 게시물이것이 왜 작동하는지 제안하기 위해 노력했지만 실제로 작동한다고 확신할 수 있습니다.