Last active
January 9, 2017 19:43
-
-
Save joshuabalduff/59a1d7410a391a32a17732464fdc5fdc to your computer and use it in GitHub Desktop.
Nginx Proxy Script for CentOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/bin/sh -e | |
sudo yum -y install nginx | |
sudo rm /etc/nginx/nginx.conf | |
cd /etc/nginx/ | |
cat > nginx.conf <<EOF | |
worker_processes 1; | |
events { | |
worker_connections 1024; | |
} | |
http { | |
include mime.types; | |
default_type application/octet-stream; | |
sendfile on; | |
keepalive_timeout 65; | |
include /etc/nginx/sites-enabled/*; | |
#server { | |
# listen 80; | |
# server_name localhost; | |
#location / { | |
#root html; | |
#index index.html index.htm; | |
#} | |
# error_page 500 502 503 504 /50x.html; | |
# location = /50x.html { | |
# root html; | |
#} | |
} | |
EOF | |
sudo mkdir -p /etc/nginx/sites-available | |
sudo mkdir -p /etc/nginx/sites-enabled | |
sudo rm /etc/nginx/sites-enabled/default | |
cd /etc/nginx/sites-available | |
sudo cat > jenkins <<EOF | |
server { | |
listen 80; # Listen on port 80 for IPv4 requests | |
server_name jenkins.example.com; | |
#this is the jenkins web root directory (mentioned in the /etc/default/jenkins file) | |
root /var/run/jenkins/war/; | |
access_log /var/log/nginx/jenkins/access.log; | |
error_log /var/log/nginx/jenkins/error.log; | |
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 @jenkins { | |
sendfile off; | |
proxy_pass http://127.0.0.1:8080; | |
proxy_redirect default; | |
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_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_buffer_size 4k; | |
proxy_buffers 4 32k; | |
proxy_busy_buffers_size 64k; | |
proxy_temp_file_write_size 64k; | |
} | |
location / { | |
# Optional configuration to detect and redirect iPhones | |
if ($http_user_agent ~* '(iPhone|iPod)') { | |
rewrite ^/$ /view/iphone/ redirect; | |
} | |
try_files $uri @jenkins; | |
} | |
} | |
EOF | |
sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/ | |
sudo service nginx restart |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment