Skip to content

Instantly share code, notes, and snippets.

@dweldon
Last active January 22, 2024 06:53
Show Gist options
  • Star 58 You must be signed in to star a gist
  • Fork 25 You must be signed in to fork a gist
  • Save dweldon/6148634 to your computer and use it in GitHub Desktop.
Save dweldon/6148634 to your computer and use it in GitHub Desktop.
This is an example of how to configure nginx to serve a meteor app.
server {
listen [::]:80;
listen 80;
server_name app.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
server_name app.example.com;
ssl on;
ssl_certificate /etc/nginx/ssl/ssl.crt;
ssl_certificate_key /etc/nginx/ssl/ssl.key;
location = /favicon.ico {
root /home/ubuntu/app/bundle/programs/web.browser/app;
access_log off;
expires 1w;
}
location ~* "^/[a-z0-9]{40}\.(css|js)$" {
root /home/ubuntu/app/bundle/programs/web.browser;
access_log off;
expires max;
}
location ~ "^/packages" {
root /home/ubuntu/app/bundle/programs/web.browser;
access_log off;
}
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
@mturley
Copy link

mturley commented May 20, 2014

Hi there,

I'm trying to use this configuration for my app, but I'm getting 502 Bad Gateway errors. I'm doing my app in a subdirectory, I don't know if that makes a difference. My goal is to serve the app (app name is "gnf") at https://depot.works/gnf/ (I have another static website planned for the depot.works/ root). If you're curious what my app is, I have it running and in use at gnf.meteor.com, and I'll be migrating that mongo data over too. I have it redirecting from gnf.depotstreetmarket.com to depot.works/gnf, and the redirect works, but when I land on /gnf I get a 502. And yes, my TLD is .works, it's a weird new one and I like it :)

Here's what I've got in my /etc/nginx/sites-available/gnf, I don't know if you'll see this but I'd appreciate anyone's help:

server {
  listen 80;
  server_name gnf.depotstreetmarket.com;
  rewrite ^ https://depot.works/gnf/$request_uri? permanent;
}

server {
  listen 443;
  server_name depot.works;

  ssl on;
  ssl_certificate /etc/ssl/localcerts/depot.works.crt;
  ssl_certificate_key /etc/ssl/localcerts/depot.works.key;

  location = /gnf/favicon.ico {
    root /opt/gnf/app/bundle/programs/client/app;
    access_log off;
    expires 1w;
  }

  location ~* "^/[a-z0-9]{40}\.(css|js)$" {
    root /opt/gnf/app/bundle/programs/client;
    access_log off;
    expires max;
  }

  location ~ "^/packages" {
    root /opt/gnf/app/bundle/programs/client;
    access_log off;
  }

  location /gnf {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
  }
}

@radzhome
Copy link

I run meteor on localhost:3000 as a service, and my nginx looks like:
``
server {
listen 80;
server_name app.example.com;

location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
``

@awrelll
Copy link

awrelll commented Apr 22, 2015

I tried your config @radlws but it shows me the nginx welcome page. Any suggestions ?

@sirpy
Copy link

sirpy commented Feb 15, 2017

you should also serve static content from public which is found under bundle/programs/app

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment