Node.js + Nginx - WNMP 多域名 多端口 反向代理

Nginx和Node.js是一对很不错的组合,在一个VPS服务器上搭了很多站点,Node.js占了很多端口,可以用Nginx反向代理实现通过不同域名访问不同端口站点的目的。

比如有一个Node.js的程序监听的是8888端口,通过qq.baiezone.com访问127.0.0.1:8888,或者另外一个用织梦CMS搭建的php站点监听的是默认80端口,通过www.baiezone.com访问127.0.0.1。

只需2步即可

 

第一步:下载安装WNMP套件组合

WNMP套件组合包含NGINX、PHP、MySQL(初始账号root密码password)等

下载地址

wnmp 2.0.1

http://wt.onlinedown.net/down/Wnmp2.0.1.zip

下载完成后解压缩

然后运行压缩包内Wnmp.exe

点击General选项卡下的Start all按钮

查看Windows 任务管理器中如果出现nginx.exe、php-cgi.exe、mysqld.exe三个进程则代表服务器运行正常,如果没有nginx.exe进程请查看80端口是否被其它程序占用,关掉其进程后重新运行nginx.exe

 

第二部:添加端口代理

打开wnmp目录下的conf目录下的nginx.conf文件

在文件最后添加如下服务

server {  

  listen 80;  

  server_name qq.baiezone.com;  

  location / {  

    proxy_pass http://127.0.0.1:8888;  

  }  

}

server_name 填上域名

proxy_pass 填上ip和端口号

最后启动node程序即可

 

附上一个完整的nginx.conf

worker_processes  1;



error_log  logs/error.log;

pid        logs/nginx.pid;





events {

    worker_connections  1024;

}





http {

    include       mime.types;

    default_type  application/octet-stream;



    access_log  logs/access.log;



    sendfile        on;

    #tcp_nopush     on;



    #keepalive_timeout  0;

    keepalive_timeout  65;

        ssl_session_timeout 10m;

        ssl_protocols TLSv1.2 TLSv1.1 TLSv1 SSLv3;

        ssl_ciphers ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH; 

        ssl_prefer_server_ciphers on;

    gzip  on;

    # http server

server {

    listen 80; # IPv4

    server_name localhost;



    ## Parameterization using hostname of access and log filenames.

    access_log logs/localhost_access.log;

    error_log logs/localhost_error.log;



    ## Root and index files.

    root html;

    index  index.php index.html index.htm;



    ## If no favicon exists return a 204 (no content error).

    location = /favicon.ico {

        try_files $uri =204;

        log_not_found off;

        access_log off;

    }

        

    ## Don't log robots.txt requests.

    location = /robots.txt {

        allow all;

        log_not_found off;

        access_log off;

    }



    ## Try the requested URI as files before handling it to PHP.

    location / {



        ## Regular PHP processing.

        location ~ \.php$ {

            root           html;

            try_files  $uri =404;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }



        ## Static files

        location ~* \.(?:css|gif|htc|ico|js|jpe?g|png|swf)$ {

            expires max;

            log_not_found off;

            ## No need to bleed constant updates. Send the all shebang in one

            ## fell swoop.

            tcp_nodelay off;

            ## Set the OS file cache.

            open_file_cache max=1000 inactive=120s;

            open_file_cache_valid 45s;

            open_file_cache_min_uses 2;

            open_file_cache_errors off;

        }



        ## Keep a tab on the 'big' static files.

        location ~* ^.+\.(?:ogg|pdf|pptx?)$ {

            expires 30d;

            ## No need to bleed constant updates. Send the all shebang in one

            ## fell swoop.

            tcp_nodelay off;

        }

        } # / location



} # end http server



# https server

server {

    listen 443 ssl;

    server_name localhost;

    ssl_certificate      ssl.cert;

    ssl_certificate_key  ssl.key;



    ## Parameterization using hostname of access and log filenames.

    access_log logs/localhost_access.log;

    error_log logs/localhost_error.log;



    ## Root and index files.

    root html;

    index  index.php index.html index.htm;



    ## If no favicon exists return a 204 (no content error).

    location = /favicon.ico {

        try_files $uri =204;

        log_not_found off;

        access_log off;

    }



    ## Don't log robots.txt requests.

    location = /robots.txt {

        allow all;

        log_not_found off;

        access_log off;

    }



    ## Try the requested URI as files before handling it to PHP.

    location / {



        ## Regular PHP processing.

        location ~ \.php$ {

            root           html;

            try_files  $uri =404;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }



        ## Static files are served directly.

        location ~* \.(?:css|gif|htc|ico|js|jpe?g|png|swf)$ {

            expires max;

            log_not_found off;

            ## No need to bleed constant updates. Send the all shebang in one

            ## fell swoop.

            tcp_nodelay off;

            ## Set the OS file cache.

            open_file_cache max=1000 inactive=120s;

            open_file_cache_valid 45s;

            open_file_cache_min_uses 2;

            open_file_cache_errors off;

        }



        ## Keep a tab on the 'big' static files.

        location ~* ^.+\.(?:ogg|pdf|pptx?)$ {

            expires 30d;

            ## No need to bleed constant updates. Send the all shebang in one

            ## fell swoop.

            tcp_nodelay off;

        }

        } # / location

} # end https server



server {

    listen 80;

    server_name qq.baiezone.com;



    location / {

        proxy_pass http://localhost:8888;

    }

}



}

 

你可能感兴趣的:(node.js)