공유메모장
[issue] nginx 활성화 시 jenkins 접속 url이 https 로 자동 파싱되는 경우 본문
상황
ssl 인증서 발급완료
nignx를 설치하고, configure 을 통해 routing 설정을 마친 상태, jenkins는 9005번 포트를 점유중
/etc/nginx/sites-available 경로에 configure 파일 내용
limit_req_zone $binary_remote_addr zone=ddos_req:10m rate=5r/s;
server {
location /jenkins/ {
proxy_pass http://localhost:8080/jenkins/;
proxy_redirect off;
limit_req zone=ddos_req burst=10;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-Port "443";
proxy_set_header X-Forwarded-Host $http_host;
}
location / {
proxy_pass http://localhost:3000;
limit_req zone=ddos_req burst=10;
}
location /api {
proxy_pass http://localhost:8080/api;
limit_req zone=ddos_req burst=10;
}
location /ws {
proxy_pass http://localhost:8000/ws;
limit_req zone=ddos_req burst=10;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/my.domain.co.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.kr/privkey.pem;
}
server {
if ($host = my.domain.co.kr) {
return 301 https://$host$request_uri;
}
listen 80;
server_name my.domain.co.kr;
return 404;
}
여기서
if ($host = my.domain.co.kr) {
return 301 https://$host$request_uri;
}
해당 블럭 때문에 jenkins는 http 로 접속하려 하지만, https 로 자동 routing 됨
그렇다면 가장 위에서 한 것처럼 prefix로 /jenkins/ 를 가진다면 http 로 접속할 수 있다.
어떻게 할까?
1. docker container를 run 할 때 prefix를 주기
docker run -itd --name jenkins2 -p 9005:8080 -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -e prefix=jenkins jenkins/jenkins:lts
-> prefix를 jenkins로 줌, port를 9005번으로 설정, docker container 내부에서도 docker 명령어를 쓸 수 있도록 설정 (.sock)
2. docker compose 설정에서 prefix 주기
version: "3"
services:
jenkins:
image: jenkins/jenkins:lts
environment:
- PREFIX=${PREFIX}
container_name: jenkins
user: root
volumes:
- /var/jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 9005:8080
.env 파일
PREFIX=jenkins
'INFRA' 카테고리의 다른 글
mysql-exporter (3) | 2024.08.07 |
---|---|
jenkins container (DinD) 에서 spring boot project가 배포 되지 않을 때 (2) | 2024.07.27 |
docker-compose 이해하기 (0) | 2024.07.24 |
[Linux] docker 명령어 (0) | 2024.07.23 |
[Linux]nginx 관련 명령어 (0) | 2024.07.23 |