Skip to content

Instantly share code, notes, and snippets.

@cvan
Created December 4, 2013 19:43
Show Gist options
  • Save cvan/7794203 to your computer and use it in GitHub Desktop.
Save cvan/7794203 to your computer and use it in GitHub Desktop.
nginx configuration for Firefox Marketplace (using a custom API)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
# Change this to update where your fireplace is running.
upstream fireplace {
server localhost:8675;
}
upstream rapidorapido {
server localhost:7000;
}
# Change this to reflect where your zamboni is running.
upstream zamboni {
server localhost:8000;
}
# Change this to reflect where your webpay is running.
# Optional - only needed if you're testing payments.
upstream webpay {
server localhost:9000;
}
server {
# Listening on port 80 is nice but you have to start nginx
# with the right permissions.
listen 80 default;
# Set a host name. You also have to alias this host to
# 127.0.0.1 in /etc/hosts
server_name fireplace.local;
location /apps/ {
rewrite ^/apps/$ / permanent;
rewrite ^/apps/(.*) /search?cat=$1 permanent;
}
rewrite ^/$ /server.html break;
rewrite ^/abuse$ /server.html break;
rewrite ^/app/.*/statistics.* $uri break;
rewrite "^/app/(?![0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}/manifest\.webapp$).*" /server.html break;
rewrite ^/category/.* /server.html break;
rewrite ^/collection/.* /server.html break;
rewrite ^/debug$ /server.html break;
rewrite ^/feedback$ /server.html break;
rewrite ^/partners/.* /server.html break;
rewrite ^/privacy-policy$ /server.html break;
rewrite ^/purchases$ /server.html break;
rewrite ^/search/?$ /server.html break;
rewrite ^/settings$ /server.html break;
rewrite ^/terms-of-use$ /server.html break;
rewrite ^/tests$ /server.html break;
rewrite ^/user/.* /server.html break;
location / {
try_files $uri /server.html;
}
#location / {
# # Default to fireplace.
# proxy_pass http://fireplace;
# proxy_set_header Host $host;
#}
location /server.html {
proxy_pass http://zamboni;
break;
}
# NOTE: Special!
location /api {
proxy_pass http://rapidorapido;
break;
}
location /mozpay/ {
# This is an optional alias to your local Webpay server
# so you can process payments. The /mozpay/ prefix is what we use in production.
proxy_pass http://webpay;
proxy_set_header Host $host;
}
# Conditionally pass Zamboni urls to Zamboni.
#location ~ '^/(admin|addons|api|developers|jsi18n\.js|login|logout|lookup|reviewers|services|tmp)' {
location ~ '^/(admin|addons|developers|jsi18n\.js|login|logout|lookup|reviewers|services|tmp)' {
proxy_pass http://zamboni;
proxy_set_header Host $host;
}
# Privacy policy etc are on zamboni.
location /media/docs {
proxy_pass http://zamboni;
break;
}
# Conditionally handle /users for both Zamboni and Fireplace.
location /users {
proxy_set_header Host $host;
if ($http_referer ~ '^http://[^/]*?/(developers|reviewers|login\?to=/(admin|reviewers|developers))') {
proxy_pass http://zamboni;
break;
}
proxy_pass http://fireplace;
}
# Conditionally handle media depending on where we are using referer (sic) header.
#location /media {
# proxy_set_header Host $host;
# if ($http_referer ~ '^http://[^/]*?/(admin|developers|login\?to=/(admin|reviewers|developers)|lookup|media/css/(ecosystem|devreg|gaia|mkt)|reviewers|services)') {
# proxy_pass http://zamboni;
# break;
# }
# if ($http_referer ~ '^http://[^/]*?/mozpay') {
# proxy_pass http://webpay;
# break;
# }
# proxy_pass http://fireplace;
#}
location /media {
alias /opt/zamboni/media;
}
location /tmp {
alias /opt/zamboni/tmp;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment