Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何配置nginx以使用Node.js和PHP_Javascript_Php_Node.js_Nginx - Fatal编程技术网

Javascript 如何配置nginx以使用Node.js和PHP

Javascript 如何配置nginx以使用Node.js和PHP,javascript,php,node.js,nginx,Javascript,Php,Node.js,Nginx,我在配置nginx以使用Node.js和PHP时遇到问题。 基本上我想要这样的东西: 用户打开my-project.com node.js服务器正在端口3001上运行 node.js的请求通过http代理发送到端口80上的my-project.com nginx(端口80)服务器运行PHP脚本并向用户显示输出 所以我想创建一些类似PHP服务器的东西,其中node.js在后台处理一些特殊任务。我不希望子域上的节点服务器,我需要它一直运行,而不是针对特定的请求 我的nginx配置 server {

我在配置nginx以使用Node.js和PHP时遇到问题。
基本上我想要这样的东西:

  • 用户打开my-project.com
  • node.js服务器正在端口3001上运行
  • node.js的请求通过http代理发送到端口80上的my-project.com
  • nginx(端口80)服务器运行PHP脚本并向用户显示输出
  • 所以我想创建一些类似PHP服务器的东西,其中node.js在后台处理一些特殊任务。我不希望子域上的节点服务器,我需要它一直运行,而不是针对特定的请求

    我的nginx配置

    server {
       listen                *:80;
    
       server_name           my-project.com www.my-project.com;
       client_max_body_size 1m;
    
       root /var/www/public;
         index  index.html index.htm index.php;
    
       access_log            /var/log/nginx/nxv_5rxici0o7b9k.access.log;
       error_log             /var/log/nginx/nxv_5rxici0o7b9k.error.log;
    
       location / {
         proxy_pass http://localhost:3001;     ### I added this line
         root  /var/www/public;
         try_files $uri $uri/ /index.php$is_args$args;
          autoindex off;
         index  index.html index.htm index.php;
    
       }
    
    
       location ~ \.php$ {
    
         root  /var/www/public;
         fastcgi_index index.php;
         fastcgi_split_path_info ^(.+\.php)(/.*)$;
         try_files $uri $uri/ /index.php$is_args$args;
         include /etc/nginx/fastcgi_params;
         fastcgi_pass 127.0.0.1:9000;
    
         fastcgi_param SCRIPT_FILENAME $request_filename;
         fastcgi_param APP_ENV dev;
    
       }
       sendfile off;
     }
    
    server.js

    var express = require('express');
    var app = express();
    var httpProxy = require('http-proxy');
    var proxy = httpProxy.createProxyServer();
    
    app.get('/', function (req, res) {
        console.log("TEST!!");
        proxy.web(req, res, { target: 'http://127.0.0.1:80' });
        //res.send('Hello World!');
    });
    
    app.listen(3001);
    
    这样我得到了内部服务器错误,可能是因为我进入了一个循环,它将我重定向到nginx,然后再重定向到节点服务器等等

    知道如何让节点服务器在my-project.com上运行而不是在nginx上运行吗

    我不是sur(我从nginx开始),但是您没有在127.0.0.1和localhost中添加第二个配置服务器来只为php服务吗

    server {
      listen                *:80;
    
      server_name           127.0.0.1 localhost;
      client_max_body_size 1m;
    
      root /var/www/public;
        index  index.html index.htm index.php;
    
      access_log            /var/log/nginx/nxv_5rxici0o7b9k.access.log;
      error_log             /var/log/nginx/nxv_5rxici0o7b9k.error.log;
    
      location ~ \.php$ {
    
     root  /var/www/public;
     fastcgi_index index.php;
     fastcgi_split_path_info ^(.+\.php)(/.*)$;
     try_files $uri $uri/ /index.php$is_args$args;
     include /etc/nginx/fastcgi_params;
     fastcgi_pass 127.0.0.1:9000;
    
     fastcgi_param SCRIPT_FILENAME $request_filename;
     fastcgi_param APP_ENV dev;
    
     }
     sendfile off;
     }
    server {
       listen                *:80;
    
       server_name           my-project.com www.my-project.com;
       client_max_body_size 1m;
    
       root /var/www/public;
         index  index.html index.htm index.php;
    
       access_log            /var/log/nginx/nxv_5rxici0o7b9k.access.log;
       error_log             /var/log/nginx/nxv_5rxici0o7b9k.error.log;
    
       location / {
         proxy_pass http://localhost:3001;     ### I added this line
         root  /var/www/public;
         try_files $uri $uri/ /index.php$is_args$args;
          autoindex off;
         index  index.html index.htm index.php;
    
       }
    
    
       location ~ \.php$ {
    
         root  /var/www/public;
         fastcgi_index index.php;
         fastcgi_split_path_info ^(.+\.php)(/.*)$;
         try_files $uri $uri/ /index.php$is_args$args;
         include /etc/nginx/fastcgi_params;
         fastcgi_pass 127.0.0.1:9000;
    
         fastcgi_param SCRIPT_FILENAME $request_filename;
         fastcgi_param APP_ENV dev;
    
       }
       sendfile off;
     }
    
    我不是sur(我从nginx开始),但是您没有在127.0.0.1和localhost中添加第二个配置服务器来只为php服务吗

    server {
      listen                *:80;
    
      server_name           127.0.0.1 localhost;
      client_max_body_size 1m;
    
      root /var/www/public;
        index  index.html index.htm index.php;
    
      access_log            /var/log/nginx/nxv_5rxici0o7b9k.access.log;
      error_log             /var/log/nginx/nxv_5rxici0o7b9k.error.log;
    
      location ~ \.php$ {
    
     root  /var/www/public;
     fastcgi_index index.php;
     fastcgi_split_path_info ^(.+\.php)(/.*)$;
     try_files $uri $uri/ /index.php$is_args$args;
     include /etc/nginx/fastcgi_params;
     fastcgi_pass 127.0.0.1:9000;
    
     fastcgi_param SCRIPT_FILENAME $request_filename;
     fastcgi_param APP_ENV dev;
    
     }
     sendfile off;
     }
    server {
       listen                *:80;
    
       server_name           my-project.com www.my-project.com;
       client_max_body_size 1m;
    
       root /var/www/public;
         index  index.html index.htm index.php;
    
       access_log            /var/log/nginx/nxv_5rxici0o7b9k.access.log;
       error_log             /var/log/nginx/nxv_5rxici0o7b9k.error.log;
    
       location / {
         proxy_pass http://localhost:3001;     ### I added this line
         root  /var/www/public;
         try_files $uri $uri/ /index.php$is_args$args;
          autoindex off;
         index  index.html index.htm index.php;
    
       }
    
    
       location ~ \.php$ {
    
         root  /var/www/public;
         fastcgi_index index.php;
         fastcgi_split_path_info ^(.+\.php)(/.*)$;
         try_files $uri $uri/ /index.php$is_args$args;
         include /etc/nginx/fastcgi_params;
         fastcgi_pass 127.0.0.1:9000;
    
         fastcgi_param SCRIPT_FILENAME $request_filename;
         fastcgi_param APP_ENV dev;
    
       }
       sendfile off;
     }
    

    你能描述一下情况吗?从我的观点来看,没有必要使用PHP和node.js托管网站。为什么不完全使用这两个选项中的一个呢?您能描述一下这个场景吗?从我的观点来看,没有必要使用PHP和node.js托管网站。为什么不完全使用这两个选项中的一个呢?您能描述一下这个场景吗?在我看来,没有必要使用PHP和node.js来托管网站,为什么不完全使用这两个选项中的一个呢?