简体   繁体   English

NGINX:domain + subdomain上的node.js + php

[英]NGINX: node.js + php on domain + subdomain

I'm trying to set node.js app on main domain and php-based forum on subdomain. 我正在尝试在主域上设置node.js应用程序,在子域上设置基于php的论坛。 Node.JS app works on 8000 port. Node.JS应用程序适用于8000端口。 Here's my config: 这是我的配置:

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    server_name myawesomeapp.ru;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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 /srv/myawesomeapp/static;
    }
}

server {
        listen 80;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.php index.html index.htm;

        server_name forum.myawesomeapp.ru

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

}

Both node.js app & php forum can't be reached at myawesomeapp.ru. 无法通过myawesomeapp.ru访问node.js app和php论坛。 127.0.0.1:8000 shows nodejs-app. 127.0.0.1:8000显示了nodejs-app。 What's wrong with my config? 我的配置有什么问题? Thanks. 谢谢。

ps my php files are placed in /usr/share/nginx/html ps我的php文件放在/usr/share/nginx/html

Please include any messages you see on response of trying to visit both vhosts. 请包含您在尝试访问两个虚拟主机时看到的任何消息。 As well make sure you include this setup in your nginx config as well as service nginx reload after changing configurations. 同时确保在更改配置后在nginx配置中包含此设置以及service nginx reload

In order to proxy nginx to node you have to use upstreams. 为了将nginx代理到节点,您必须使用上游。 Here is configuration that might suit your needs: 以下配置可能适合您的需求:

upstream node {
  server 127.0.0.1:8000;
}

server {
  listen 80;

  server_name myawesomeapp.ru;

  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;
    root /srv/myawesomeapp/static
    try_files $uri $uri/ =404;
    expires 365d;
  }

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://node/;
    proxy_redirect off;
  }
}

For your forum try this config: 为您的论坛尝试此配置:

server {
  server_name www.forum.myawesomeapp.ru;
  rewrite ^(.*) http://forum.myawesomeapp.ru$1 permanent;
}

server {
  listen 80 default_server;
  server_name forum.myawesomeapp.ru;

  root /usr/share/nginx/html;
  index index.php;
  charset utf-8;

  gzip on;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";

  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;
    try_files $uri $uri/ =404;
    expires 365d;
  }

  error_page 404 /404.html;

  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_intercept_errors on;
  }
}

尝试从配置中删除此行:

listen [::]:80 default_server ipv6only=on;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM