Created
May 19, 2017 10:41
-
-
Save beradrian/1236e481cfa1560b6e2cc64974129b7b to your computer and use it in GitHub Desktop.
Nginx configuration
This file contains 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
# | |
# Acts as a nginx HTTPS proxy server | |
# enabling CORS only to domains matched by regex | |
# /https?://.*\.mckinsey\.com(:[0-9]+)?)/ | |
# | |
# Based on: | |
# * http://blog.themillhousegroup.com/2013/05/nginx-as-cors-enabled-https-proxy.html | |
# * http://enable-cors.org/server_nginx.html | |
# | |
server { | |
listen 443 default_server ssl; | |
server_name localhost; | |
# Fake certs - fine for development purposes :-) | |
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; | |
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; | |
ssl_session_timeout 5m; | |
location / { | |
proxy_redirect off; | |
proxy_set_header Host $host; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
# Nginx doesn't support nested If statements, so we | |
# concatenate compound conditions on the $cors variable | |
# and process later | |
# If request comes from allowed subdomain | |
# (*.mckinsey.com) then we enable CORS | |
if ($http_origin ~* (https?://.*\.mckinsey\.com(:[0-9]+)?$)) { | |
set $cors "1"; | |
} | |
# OPTIONS indicates a CORS pre-flight request | |
if ($request_method = 'OPTIONS') { | |
set $cors "${cors}o"; | |
} | |
# Append CORS headers to any request from | |
# allowed CORS domain, except OPTIONS | |
if ($cors = "1") { | |
more_set_headers 'Access-Control-Allow-Origin: $http_origin'; | |
more_set_headers 'Access-Control-Allow-Credentials: true'; | |
proxy_pass http://serverIP:serverPort; | |
} | |
# OPTIONS (pre-flight) request from allowed | |
# CORS domain. return response directly | |
if ($cors = "1o") { | |
more_set_headers 'Access-Control-Allow-Origin: $http_origin'; | |
more_set_headers 'Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE'; | |
more_set_headers 'Access-Control-Allow-Credentials: true'; | |
more_set_headers 'Access-Control-Allow-Headers: Origin,Content-Type,Accept'; | |
add_header Content-Length 0; | |
add_header Content-Type text/plain; | |
return 204; | |
} | |
# Requests from non-allowed CORS domains | |
proxy_pass http://serverIP:serverPort; | |
} | |
} |
This file contains 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
# https://www.nginx.com/blog/nginx-caching-guide/ | |
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g | |
inactive=60m use_temp_path=off; | |
server { | |
... | |
location / { | |
proxy_cache my_cache; | |
proxy_cache_revalidate on; | |
proxy_cache_min_uses 3; | |
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 | |
http_504; | |
proxy_cache_lock on; | |
proxy_pass http://my_upstream; | |
} | |
} |
This file contains 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
http { | |
proxy_redirect off; | |
proxy_set_header Host $host; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
# caching options | |
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my-cache:8m | |
max_size=1000m inactive=600m; | |
proxy_temp_path /var/cache/tmp; | |
server { | |
listen 80; | |
server_name subdomain.example.com; | |
access_log on; | |
error_log on; | |
location /{ | |
proxy_pass http://localhost:3000/subdomain; | |
} | |
} | |
server { | |
listen 80; | |
server_name example.com; | |
access_log on; | |
error_log on; | |
location / { | |
proxy_pass http://localhost:3000/; | |
proxy_cache my-cache; | |
proxy_cache_valid 200 302 60m; | |
proxy_cache_valid 404 1m; | |
} | |
} | |
} |
This file contains 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
http { | |
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m | |
inactive=24h max_size=1g; | |
server { | |
location / { | |
proxy_pass http://1.2.3.4; | |
proxy_set_header Host $host; | |
proxy_cache STATIC; | |
proxy_cache_valid 200 1d; | |
proxy_cache_use_stale error timeout invalid_header updating | |
http_500 http_502 http_503 http_504; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment