skip to Main Content

I am new in linux world so hope my question is formulated correctly.

I have hosted my .net core app on linux vm (centos) running on localhost:5000 and have nginx set up to access it from outisde. I access this website like this http://myipaddress/

I also installed jenkins and it is running on localhost:8080 inside vm.

I want to configure nginx.config file like that so I had access to jenkins on path http://myipaddress/jenkins

nginx.config file:

       server {
       listen 80 default_server;
       listen [::]:80 default_server;
       location /  {
           proxy_pass http://localhost:5000;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection keep-alive;
           proxy_set_header Host $host;
           proxy_cache_bypass $http_upgrade;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
        }

I think I should add new ‘location’ entry to point to jenkins but not sure how to do it.
any help would be appreciated.

Edit: I am not using docker.

2

Answers


  1. First, you have to configure Jenkins with a context path. You can do this by passing a launch parameter --prefix=/jenkins. If you are on docker you can pass it like below.

    docker run --name myjenkins -p 8080:8080 -p 50000:50000 --env JENKINS_OPTS="--prefix=/jenkins" jenkins/jenkins:lts
    

    Else you can export the following env variable.

    export JENKINS_OPTS="--prefix=/jenkins"
    

    Once that’s done a simple Nginx rule like below should work for you.

    server {
        listen 80;
        server_name jenkins.ycr.com;
    
        location /jenkins {
                proxy_pass  http://127.0.0.1:8080;
                proxy_redirect http://127.0.0.1:8080/ http://jenkins.ycr.com/;
            }
    }
    
    
    Login or Signup to reply.
    • Docker:
    docker run --name jenkins -p 8080:8080 -p 50000:50000 --env JENKINS_OPTS="--prefix=/jenkins" jenkins/jenkins:lts-jdk11
    

    -p 50000:50000: will be used when you connect a slave agent, more details

    • Docker file:
    FROM jenkins/jenkins:lts-jdk11
    .......
    ENV JENKINS_OPTS="--httpPort=8080 --prefix=/jenkins"
    ......
    EXPOSE 8080
    
    • Docker compose
    version: '3.8'
    services:
      jenkins:
        image: jenkins/jenkins:lts
        container_name: jenkins
        ports:
          - 8080:8080
          - 50000:50000
        environment:
          - JENKINS_OPTS=--prefix=/jenkins
    
    • SYS_VM_MACHINE:

      Edit jenkins config file and add --prefix=/jenkins to ‘JENKINS_ARGS’.

      • Ubuntu/Debian => ‘/etc/default/jenkins’
      • Rhel/CentOS => ‘/etc/sysconfig/jenkins’
    JENKINS_ARGS="... --prefix=/jenkins"
    

    Nginx config like :

    upstream jenkins_server {
      keepalive 64; # keepalive connections
      server 127.0.0.1:8080; # jenkins ip and port
    }
    
    server {
       listen       80;
       #Add mapping in file /etc/hosts to using a HostName Instead of Ip Adress
       server_name  "my.servername.local" ;
    
       ...
    
       location ^~ /jenkins/ {
           proxy_pass         http://jenkins_server/jenkins;
    
           proxy_set_header   Host             $host;
           proxy_set_header   X-Real-IP        $remote_addr;
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
           proxy_set_header   X-Forwarded-Proto $scheme;
           proxy_max_temp_file_size 0;
    
           # for jenkins websocket agents
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "Upgrade";  
    
           proxy_connect_timeout      150;
           proxy_send_timeout         100;
           proxy_read_timeout         100;
    
           proxy_buffer_size          8k;
           proxy_buffers              4 32k;
           proxy_busy_buffers_size    64k;
           proxy_temp_file_write_size 64k;
    
       }
    
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search