Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

공유메모장

[issue] nginx 활성화 시 jenkins 접속 url이 https 로 자동 파싱되는 경우 본문

INFRA

[issue] nginx 활성화 시 jenkins 접속 url이 https 로 자동 파싱되는 경우

댕칠이 2024. 7. 24. 14:12

상황

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