Nginx反向代理:以node項目爲例實現多虛擬主機,對JavaSpring項目適用

在node項目開發中,不管是開發測試的須要,或者從運營成本考慮,都避免不了在同一個服務器上運行多個node項目。並且,咱們又想經過不一樣的域名,訪問不一樣的node程序。這種狀況下,咱們就須要使用反向代理,來實現端口的分發,實現咱們的需求。node

在這裏我主要介紹一下,如何使用Nginx實現反向代理。nginx

我之因此選擇Nginx做反向代理,是由於接手的項目是使用的Nginx,另外一個緣由是由於以前,我懂的如何使用Nginx給不一樣的域名配置https證書,也就沒想着再使用nodejs作方向代理。若是有人問,這兩種方法,哪一個性能更好一些?抱歉,本人也沒有作過測試。web

Nginx反向代理,基本和後臺語言或框架無關,最近已證明對Java Spring 項目一樣適用shell

使用場景

  1. 須要在同一個服務器上運行多個web server項目;
  2. 每一個項目使用不一樣的端口;
  3. 須要經過不一樣的域名或者子域名,訪問不一樣的web server服務

Nginx安裝

Nginx的安裝方法,網上有很多的教程,我就不在這裏贅述了,推薦一個博客:《centos 6.5下編譯安裝、配置高性能服務器Nginx(安裝筆記)》centos

Nginx反向代理

  1. 安裝Nginx後,找到Nginx的配置文件: nginx.conf

(centOS默認安裝狀況下,通常在如下路徑:/usr/local/nginx/conf/nginx.conf)服務器

nginx.conf

  1. 在nginx.conf文件所在目錄新建一個 vhost文件夾。(用來統一存放每一個虛擬主機的配置文件,方便之後管理,其餘名字也能夠)。

vhost

  1. 進入vhost文件夾,新建 demo_host.conf 文件。(一樣文件名不作要求,可是建議以域名或者子域名做爲文件名,方便之後修改)

demo_host.conf

  1. 在demo_host.conf文件中,寫入如下內容:
upstream yourhost {
  server 127.0.0.1:3000;
  keepalive 64;
}
server {

    listen 80;
    server_name yourhostname.com;
    access_log /var/log/nginx/demohost.log;
    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_set_header Connection "";
        proxy_pass      http://yourhost;

    }

}

下面配圖解釋一下:框架

圖片描述

特別強調 :多個.conf中的upstream yourhost 函數不能重名,不然,Nginx會報警告,而且只有一個.conf生效函數

若是你須要給這個域名配置https證書,只須要作出以下改變:性能

圖片描述

  1. 最後在nginx.conf文件中添加這樣以下代碼就能夠了
include /usr/local/nginx/conf/vhost/*.conf;

導入位置以下:測試

圖片描述

  1. 完成。重啓nginx後,反向代理就生效了。

後記

若是你想建立多個虛擬主機,之後只須要在vhost文件夾中添加新的.conf文件就能夠了

相關文章
相關標籤/搜索