업데이트:이 게시물 하단에 2차 시도를 추가했습니다. 그것은 "작동 중"이지만, 나는 나의 독창적인 아이디어를 작동시키고 싶습니다.
리디렉션 서버를 통해 특정 도메인에 대한 https 요청을 다른 도메인으로 리디렉션하려고 합니다.
https://website.com
예를 들어 , https://website2.com
및 를 사용하겠습니다 https://myredirectserver.com
.
에 대해 구매한 SSL 인증서가 있고 website.com
해당 DNS는 에 CNAMED되어 www
있습니다 myredirectserver.com
. 에 대한 SSL 인증서도 있으며 mywebsite2.com
현재 서버에 있습니다. 모두 독립형 도메인과 같습니다.
myredirectserver.com
두 개의 IP 주소를 가리키는 두 개의 트래픽 관리 A 레코드(고가용성)가 있습니다.
이 두 IP 주소는 방화벽에서 프록시 서버로 NAT됩니다.
해당 프록시 서버에는 Alpine/Nginx를 실행하는 Docker 컨테이너가 있습니다.
컨테이너용 Dockerfile:
FROM nginx:1.17.7-alpine
RUN apk add --no-cache tzdata
ENV TZ America/Chicago
RUN rm /etc/nginx/conf.d/default.conf
COPY myredirectserver.com.conf /etc/nginx/conf.d/myredirectserver.com.conf
RUN rm /etc/nginx/nginx.conf
COPY nginx.conf /etc/nginx/nginx.conf
COPY myredirectserver.com.crt /etc/nginx/ssl/myredirectserver.com.crt
COPY myredirectserver.com.key /etc/nginx/ssl/myredirectserver.com.key
COPY proxy_params /etc/nginx/proxy_params
docker run
시작 부분(백엔드 코드를 통해 동적 구성 파일 생성을 위해 마운트된 볼륨이 있음) :
docker run --name=myredirectserver --restart always --log-opt max-size=50m --log-opt max-file=5 -d -v /etc/nginx/myredirectserverBuild:/etc/nginx/myredirectserverBuild -v /etc/nginx/myredirectserverSSL:/etc/nginx/myredirectserverSSL -p 8224:443 -p 8223:80 myredirectserver
해당 Docker 컨테이너에서 Nginx 구성 파일은 다음 위치에 있습니다 /etc/nginx/conf.d/myredirectserver.com.conf
.
#I DO NOT KNOW IF THIS IS CORRECT FOR WHAT I NEED
server {
listen 443 ssl;
server_name myredirectserver.com www.myredirectserver.com;
ssl_certificate /etc/nginx/ssl/myredirectserver.com.crt;
ssl_certificate_key /etc/nginx/ssl/myredirectserver.com.key;
}
server {
listen 80;
server_name myredirectserver.com www.myredirectserver.com;
return 301 https://www.myredirectserver.com$request_uri;
}
include /etc/nginx/myredirectserverBuild/*.conf;
마지막에 있는 포함 파일에는원래의요청한 도메인 mywebsite.com.conf
:
## www.mywebsite.com virtual host
server {
listen 443 ssl;
server_name mywebsite.com www.mywebsite.com;
ssl_certificate /etc/nginx/myredirectwebsiteSSL/mywebsite.com.crt;
ssl_certificate_key /etc/nginx/myredirectwebsiteSSL/mywebsite.com.key;
}
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
return 301 https://www.mywebsite2.com$request_uri; <--- The redirect
}
도메인은 website2.com
호스트 서버에 있으므로 평소와 같이 해당 도메인을 요청할 수 있습니다. 나는 내가 어디서 잘못되었는지 알 수 없습니다. 내 Nginx 구성에 있는 것 같지만 내 Nginx 구문이 최고는 아닙니다. 내가 return 301
일하지 않고 도메인으로 리디렉션되는 이유는 무엇입니까?
문제 해결 중 몇 가지 참고 사항:
wget 0.0.0.0:8223
보고:
--2021-07-26 23:44:19-- http://0.0.0.0:8223/
Connecting to 0.0.0.0:8223... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.mywebsite2.com/ [following]
--2021-07-25 23:44:19-- https://www.mywebsite2.com/
Resolving www.mywebsite2.com (www.mywebsite2.com)... XX.XXX.XXX.XXX
Connecting to www.mywebsite2.com (www.mywebsite2.com)|XX.XXX.XXX.XXX|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’
index.html [ <=> ] 37.56K 231KB/s in 0.2s
2021-07-25 23:44:20 (231 KB/s) - ‘index.html’ saved [38461]
curl --resolve www.myredirectserver.com:8223:0.0.0.0 http://www.myredirectserver.com/
브라우저와 마찬가지로 시간 초과를 반환합니다.
로컬 네트워크에 있는 동안 주소 표시줄( )에 Docker 컨테이너의 IP를 입력하면 192.168.69.140:8223
으로 이동됩니다 https://www.website2.com
.
입력하면 https://192.168.69.140:8224
보안 스플래시 경고 페이지로 이동됩니다. 을 클릭 proceed
하면 404
.
CNAME의 IP에 도달하면 요청을 처리하는 방법을 모르기 때문에 헤매고 있습니다 myredirectserver.com
. Nginx에게 원래 요청한 도메인을 보도록 지시하려면 어떻게 해야 합니까 website.com
?
업데이트(두 번째 시도):
Docker 컨테이너를 중지하고 이미 존재하는 고가용성 IP를 가리키도록 DNS 수준 CNAME
을 변경했습니다. www
내가 전화할게 destinationserver.net
. 그래서 기본적으로:
`mywebsite.com`
|
|---> CNAME 'destinationserver.net'
`destinationserver.net`
|
|----> A XX.XXX.XXX.XXX --> Firewall --> Proxy
|----> A XX.XXX.XXX.XXX --> Firewall --> Proxy
서버 의 destinationserver.net
Nginx 구성에는 다음이 있습니다 website.com
.
# ## www.mywebsite.com virtual host
server {
listen 8222 ssl;
server_name mywebsite.com www.mywebsite.com;
ssl_certificate /etc/nginx/ssl/mywebsite.com.crt;
ssl_certificate_key /etc/nginx/ssl/mywebsite.com.key;
return 301 http://www.mywebsite2.com$request_uri;
}
server {
listen 8221;
server_name mywebsite.com www.mywebsite.com;
return 301 https://www.mywebsite2$request_uri;
}
질문 첫 번째 줄의 '업데이트'에서 언급했듯이 이는 "작동 중"이지만 이러한 리디렉션을 별도의 공간에서 처리하는 것이 좋을 것이므로 Docker 컨테이너 아이디어가 필요합니다.
답변1
나는 리디렉션 서버 아이디어를 버리고 대신 다음 두 가지를 선택했습니다.
www
요청이 비요청과 동일한 고가용성 트래픽 관리자 위치로 이동되도록 루트 도메인에 ANAME(별칭)을 추가했습니다 www
. 그런 다음 Nginx
구성에서 요청을 리디렉션하기 위해 다음을 추가했습니다.
# ## www.mywebsite.com virtual host
server {
listen 8222 ssl;
server_name mywebsite.com www.mywebsite.com;
ssl_certificate /etc/nginx/ssl/mywebsite.com.crt;
ssl_certificate_key /etc/nginx/ssl/mywebsite.com.key;
return 301 https://www.mywebsite2.com$request_uri;
}
server {
listen 8221;
server_name mywebsite.com www.mywebsite.com;
return 301 https://www.mywebsite2$request_uri;
}
이것은 내가 해야 할 일을 위해 작동하고 있으므로 누군가 더 나은 방법을 제시하지 않는 한 그대로 두겠습니다.