Nodejs 用于处理 js,Nginx 用于处理其他一切

Nodejs 用于处理 js,Nginx 用于处理其他一切

我正在nodejs在端口上运行8000nginx在港口80在同一台服务器上。

我希望 Nginx 处理所有请求(图像、css 等)并将 js 请求转发到端口 8000 上的 nodejs 服务器。

有可能实现吗?我已经将 nginx 配置为反向代理,但它将每个请求转发到 nodejs,但我希望 nginx 处理除 js 之外的所有请求。

nginx/站点启用/默认/

upstream nodejs  {
  server localhost:8000; #nodejs

}

location / {
 proxy_pass  http://192.168.2.21:8000;
 proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
 proxy_redirect off;
 proxy_buffering 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;
}

更新尝试了这个:但什么都没有改变,nginx 仍然将每个请求转发到 nodejs

 server {
    listen   192.168.2.21:80;


  server_name server;

  access_log /var/log/server/access.log;
  error_log /var/log/server/error.log;

 root /var/www/static;

location / {
proxy_pass http://127.0.0.1:8000;
 root /var/www/jsfiles;
access_log on;
}

静态资产

location ~* ^(?!\/).+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$ {
expires max;
access_log off;

}

答案1

我通常会分离静态内容并在另一个位置指令中处理它。例如:

location ~ ^/{static|images|css,...}/ {
    root /var/www/static;
}

location / {
    proxy_pass http://nodejs;
}

相关内容