【小白】nginx nodejs 问题

服务器上已经跑了自己的hexo blog;
现在想在上面跑一个node后端项目,应该如何设置?
node的端口已经跑在3000;

blog的server:

server {
        listen 80;                           
                                                                
        #root /var/www/html;                                          
        root /home/....../blog/;                                     
                                                                      
        # Add index.php to the list if you are using PHP              
        index index.html index.htm index.nginx-debian.html;           
                                                                      
        server_name thisismysite.com www.thisismysite.com;                
                                                                      
        location / {                                                  
                # First attempt to serve request as file, then        
                # as directory, then fall back to displaying a 404.   
                try_files $uri $uri/ =404;                                  
        }                                                                        
}  

node的server:
照网上说的配置upstream 和proxy_pass 并没有效果;

upstream terminal_end {
        server 127.0.0.1:3000;
}

server {
        listen 80;              
        #server_name _;      
        #root                                                                                                
        location / {                                                  
                # First attempt to serve request as file, then        
                # as directory, then fall back to displaying a 404.   
                try_files $uri $uri/ =404;                            
                proxy_pass  http://terminal_end;                      
                #proxy_set_header Host  $http_host;                   
                #proxy_set_header X-Real-IP  $remote_addr;            
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      
                #proxy_set_header X-Nginx-proxy true;                 
                #proxy_redirect off;                                  
        }
}

如果要跑node项目,一定要写域名吗?root也一定要写吗?如果写,怎么写?

还是说我的blog的server也需要设置?

如果不用,应该如何设置?

感谢各位大佬解答

阅读 2.8k
5 个回答

根据 server_name 设置,使用 thisismysite.com 访问你的网站的时候,不会访问到你的 node server,因为 server_name 匹配会直接选择 blog server 。

如果你有两个不同的域名,可以给两个 server 用不同的域名。没有的话,可以把两个 server 放在不同的端口(listen)上。

或者,把 node server 配到 blog server 下的一个 location 也是可以的,就是略微麻烦一点。

server_name localhost这样然后通过IP访问试试

不是,你需要新建server 监听3000端口,不是在原有的80端口改。你现在这种写法是负载均衡的配置档方法。看一下nginx多站点的配法

谢邀。。。我来晚了,楼上的回答很全面了。。。补充一份ngingx配置详解给楼主吧

给你举个标准例子:

server {
  listen 80;
  server_name test.ml 192.168.10.1;
  access_log /data/wwwlogs/test_nginx.log combined;
  index index.html index.htm index.php;
  root /data/wwwroot/test.ml;

  location /api {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:7001/api; # nodejs启动的服务
  }

  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
    access_log off;
  }
  location ~ .*\.(js|css)?$ {
    access_log off;
  }
  location ~ /\.ht {
    deny all;
  }
  location ~ /\.(svn|git|record) {
    return 404;
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题