
EC2 인스턴스에서 두 개의 컨테이너가 실행 중입니다. 첫 번째는 포트 4200을 사용하고 두 번째는 8188을 사용합니다. 또한 EC2 인스턴스에 연결된 도메인 이름 "my-domaine.com"이 있습니다. 도메인과 보안 연결을 통해 이러한 컨테이너에 접근하는 것을 목표로 하므로 다음 단계를 수행했습니다.
- "app1.my-domaine.com" 및 "app2.my-domaine.com"이라는 각 컨테이너에 두 개의 다른 도메인을 추가합니다(각 도메인은 다른 컨테이너로 이동됩니다).
- 설치하면 인증서를 암호화할 수 있습니다.
- EC2 인스턴스에 nginx 서버 설치
- https를 활성화하고 도메인 이름의 요청을 이와 같이 컨테이너로 전달하기 위해 다음 구성을 추가했습니다.
server {
listen 80;
server_name my-domaine.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name app1.my-domaine.com;
port_in_redirect on;
ssl_certificate "/etc/letsencrypt/live/my-domaine.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/my-domaine.com/privkey.pem";
location / {
proxy_pass http://127.0.0.1:4200;
}
# added this to redirect any path to the container as well
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:4200$1$2;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name app2.my-domaine.com;
port_in_redirect on;
ssl_certificate "/etc/letsencrypt/live/my-domaine.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/my-domaine.com/privkey.pem";
location / {
proxy_pass http://127.0.0.1:8188;
}
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
}
제가 겪고 있는 문제는 다음 블록을 포함했음에도 불구하고 .js, .css 또는 .json 파일과 같은 파일을 로드할 때 오류 메시지가 나타나는 것입니다.
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
예를 들어 "app1.my-domaine.com/admin"과 같이 도메인에 경로를 추가하면 nginx에서 기본 404 오류 페이지도 수신됩니다. 경로나 파일을 포함한 모든 요청이 적절한 컨테이너로 라우팅되는지 확인하는 방법에 대한 제안 사항이 있습니까?
업데이트 변경사항이 있습니다.
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188$1$2;
}
이에
location ~ ^/([^/]+)(/.*)?$ {
proxy_pass http://127.0.0.1:8188/$1$2;
}
CSS 및 JS 파일이 올바르게 로드되었지만 여전히 한 가지 문제가 있습니다. 내가 갈 때https://app1.my-domain.com/admin브라우저에서는 127.0.0.1:4200/admin으로 리디렉션됩니다. 이는 nginx가 요청을 프록시하는 대신 리디렉션하고 있음을 의미합니다.