dongsuoxi1790
dongsuoxi1790
2013-07-08 20:02
浏览 56

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

I'm trying to set node.js app on main domain and php-based forum on subdomain. Node.JS app works on 8000 port. 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. 127.0.0.1:8000 shows nodejs-app. What's wrong with my config? Thanks.

p.s. my php files are placed in /usr/share/nginx/html

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douzhe3516
    douzhe3516 2013-07-09 09:09
    已采纳

    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.

    In order to proxy nginx to node you have to use upstreams. 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;
      }
    }
    
    点赞 评论
  • douqiang6448
    douqiang6448 2013-07-09 14:49

    Try just remove this lines from your config:

    listen [::]:80 default_server ipv6only=on;
    
    点赞 评论

相关推荐