У меня есть jenkins и nginx, работающие через docker-compose
, и они оба находятся в одной сети docker. Jenkins не предоставляет никаких портов для хост-машины и имеет конфигурацию по умолчанию для работы на порте 8080 и nginx карты 8003:443
.
У нас есть сервер, расположенный в частной сети и поддомене, и у меня есть следующий nginx файл конфигурации
upstream jenkins {
server jenkins:8080;
}
server {
listen 443 ssl;
server_name abc.example.com;
ssl_certificate /etc/ssl/private/certificate.crt;
ssl_certificate_key /etc/ssl/private/key.pem;
root /var/run/jenkins/war/;
ignore_invalid_headers off; #pass through headers from Jenkins which are considered invalid by Nginx server.
location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
#rewrite all static files into requests to the root
#E.g /static/12345678/css/something.css will become /css/something.css
rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
}
location /userContent {
#have nginx handle all the static requests to the userContent folder files
#note : This is the $JENKINS_HOME dir
root /var/lib/jenkins/;
if (!-f $request_filename){
#this file does not exist, might be a directory or a /**view** url
rewrite (.*) /$1 last;
break;
}
sendfile on;
}
location / {
proxy_pass http://jenkins/;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
sendfile off;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port 443;
proxy_max_temp_file_size 0;
#this is the maximum upload size
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_set_header Connection ""; # Clear for keepalive
}
}
Большинство этих настроек взяты из руководства по устранению неисправностей, так как моя первоначальная попытка не перечислила их все, и я получил и все еще получаю уведомление It appears that your reverse proxy set up is broken.
В настоящее время Вроде бы только частично работает. Некоторые URL работают нормально, например, если я нажимаю на людей, я получаю https://abc.example.com:8003/asynchPeople/
, но другие, такие как логин и синий океан, похоже, отбрасывают порт. Добавление этого обратно вручную заставляет работать URL. Так что я не уверен, что именно не так. Я должен также добавить, что я установил URL Дженкинса на abc.example.com:8003