Skip to content

Instantly share code, notes, and snippets.

@toomasr
Created January 4, 2013 12:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save toomasr/4452232 to your computer and use it in GitHub Desktop.
Save toomasr/4452232 to your computer and use it in GitHub Desktop.
nginx configuration for the Wordpress blog post
upstream servers-frontend {
ip_hash;
server 10.10.137.100:80; # server-1
server 10.10.126.101:80; # server-2
}
upstream server-2 {
server 10.10.137.101:80;
}
upstream server-2-ssl {
server 10.10.137.101:443;
}
server {
listen 80;
server_name my-server.com www.my-server.com;
error_page 502 503 504 @maintenance;
location / {
proxy_pass http://servers-frontend;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
# WP-Admin is accessed via HTTPS, however, some components
# still work via HTTP despite FORCE_SSL_ADMIN being set to TRUE.
location /wp-admin {
proxy_pass http://server-2;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location @maintenance {
root /etc/nginx/html;
rewrite ^(.*) /maintenance.html break;
}
}
server {
listen 443;
server_name my-server.com www.my-server.com;
ssl on;
ssl_certificate /etc/nginx/ssl/my-server.crt;
ssl_certificate_key /etc/nginx/ssl/my-server.key;
location /wp-login.php {
proxy_pass https://server-2-ssl;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
# Only handle HTTPS requests for WP-Admin
# This should be set before other `location` directives
# as locations are matched by regexp in the order they appear
location ~ ^/wp-(admin|content|includes) {
#increase client max size for wp-admin connection to allow bigger picture uploads to blog
client_max_body_size 2M;
proxy_pass https://server-2-ssl;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
# All the other pages are served via HTTP
location ~ ^.* {
# Will you be so kind to GTFO my sire? o_Q
rewrite ^(.*)$ http://my-server.com$1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment