-
-
Save joemccann/644282 to your computer and use it in GitHub Desktop.
The idea is to have nginx installed and node installed. Will extend this gist to include those soon, but the following assumes you have nginx and node installed on a linux distro (I used Ubuntu | |
1) nginx is used to serve static files (css, js, images, etc.) | |
2) nginx.conf - changes required to allow proxying back thru to your node app. | |
So, www.foo.com request comes in | |
css, js, and images get served thru nginx | |
everything else (the request for say index.html or "/") gets served through node. | |
3) nginx listens on port 80. | |
4) node listens on port 8124. | |
So in your /etc/nginx/sites-available/default: | |
location / { | |
proxy_pass http://127.0.0.1:8124; #this is the ip:port where your node app runs | |
root /var/www/yoursitename; | |
expires 30d; | |
#uncomment this is you want php to pass thru: | |
#index index.php index.html; | |
access_log off; | |
} | |
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ { | |
root /var/www/yoursitename/public; | |
} | |
location /doc { | |
root /usr/share; | |
autoindex on; | |
allow 127.0.0.1; | |
deny all; | |
} |
Thanks a lot man!! :)
well what will be the pcre if the static files needs to be served from the location /test/ location instead of root?
What portions would be changed in this:
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ {
as long as /test/ is within the document root you don't need to change anything.
try this if that doesn't work:
location ~* .*.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ {
access_log off;
expires max;
root /var/www/yoursitename/public;
}
Very helpful; thanks!
3Q!
"I will extend this gist to include how to install those as well." Did you ever get a chance to write those? This gist is handy. :)
helpful, thanks.
When nodejs provides sendfile(), how would nginx be beneficial over nodejs to serve static files ?
@sisingh - Nginx is a lot faster than node at serving static files & performing optimizations such as gzip and caching. That is why even though node can serve static files as you correctly pointed out, this is not the best solution. Depending on your web server backend, it is best to let nginx, Apache, or IIS handle the serving of static files.
Hi, whats happen if i have subroutes inside my node app? im not able to make it works, my app is running on 8002 port and i have the following conf:
#proxy to a node app running on 8002 port
location ^~ /auth/ {
proxy_pass http://localhost:8002/;
redirect works, but when im trying to go to a any node app'subroute, nginx dont know what to do and returns a 404.
any idea?
thanks
In my case I have API Rest on Node in localhost:3000 and I call this with:
location /api {
proxy_pass http://localhost:3000;
proxy_buffering on;
}
Now, my app on mydomain.com
serves the frontend and if I call mydomain.com/api
serves my API Rest.
I hope this help you 👍
@cybermarkus1 I am having exactly the same problem like you, do you remember how you solved that problem? thanks!
Same problem here @cybermarkus1
Amazing! Was up all night trying to figure this out. Thanks.
Hello!
I have several applications in node.js, and I want to run with nginx to redirect me. I can not achieve it is to manage the routing of express good.
I have the following in node:
/ * GET home page. * /
router.get ( '/', function (req, res, next) {
res.render ( 'index.html');
});
/ * GET dashboard * /
router.get ( '/ timelife', function (req, res, next) {
res.render ( 'admin / timeLife.html');
});
and my nginx configuration is as follows:
location / editor / {
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
Host proxy_set_header $ HTTP_HOST;
proxy_set_header X-NginX-Proxy true;
PROXY_PASS http: //190.28.3615: 3001 /;
proxy_redirect off;
proxy_http_version 1.1;
Upgrade proxy_set_header $ http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $ scheme;
proxy_cache_key sfs $ request_uri $ scheme;
}
when I try to access http://mydomain.com/editor/, I redirected the product http://mydomain.com/login/ and shows me 404 error.
Any idea how to fix this?
Ive set it up on a raspberry pi2. The site is at:
www/subdomain.domain.com/aism/index.html && the nodejs app is here too
from another computer on the network I can see the index.html but the app doesnt work. The app works fine remotely thru the router when on http:
I'm add:
load domain.com/socket/ Return
What is the problem?
thanks