Programster's Blog

Tutorials focusing on Linux, programming, and open-source

Jenkins - Nginx Reverse Proxy Configuration

Below is my working Nginx site configuration for reverse proxying my Jenkins deployment. I ended up having to strip out my default proxy configuration stuff, and copying as much as possible from the Jenkins docs. I am posting this to help prevent me having to go through the same pain ever again.

server {
    listen 80;
    return 302$request_uri;

server {
    listen 443 ssl;

    ssl on;


    access_log  /var/log/nginx/access.log;

    ssl_certificate      ssl/;
    ssl_certificate_key  ssl/;

    ssl_protocols        TLSv1.2;
    ssl_ciphers RC4:HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    keepalive_timeout    60;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;

    location / {

      sendfile off;

      proxy_redirect     default;
      proxy_http_version 1.1;

      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_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_buffering            off;
      proxy_request_buffering    off; # Required for HTTP CLI commands in Jenkins > 2.54
      proxy_set_header Connection ""; # Clear for keepalive

Be sure to change to whatever your FQDN is, and the IP address of to whatever is appropriate for you.


Last updated: 17th July 2023
First published: 25th October 2022