Nginx怎么高效的在一臺服務(wù)器部署多個站點

下來看一下我們的需求,我這里有三個網(wǎng)站項目工程需要部署(依次對應(yīng)著三個域名),提供一臺linux服務(wù)器,要實現(xiàn)訪問對應(yīng)的域名跳轉(zhuǎn)到對應(yīng)的網(wǎng)站。

下來我們看一下為了解決這個問題,我所設(shè)計的體系架構(gòu)圖:

Nginx怎么高效的在一臺服務(wù)器部署多個站點

這里我們假定圖中l(wèi)inux服務(wù)器公網(wǎng)ip為192.168.2.100,然后假定要在這臺服務(wù)器搭建這么三個站點:www.nginxtest.net、admin.nginxtest.net、app.nginxtest.net。

好了,下來我們具體配置一下:

1.配置nginx反向代理

我們還是先連接ssh,然后進(jìn)行下面操作(一般不建議修改默認(rèn)主配置文件nginx.conf,所以我們新建負(fù)載均衡配置文件fxdl.conf,保證服務(wù)器安全,如下):

$?ssh?root@192.168.2.100?????????????//ssh連接 #?cd?/usr/local/nginx/conf #?touch?fxdl.conf?????????????????//創(chuàng)建代理配置文件 #?vi?fxdl.conf??????????????????//用vi編輯器打開文件,然后按鍵盤的i

注意:vi編輯器中,鍵盤按 i 進(jìn)入 insert 狀態(tài),按 esc 退出 insert 狀態(tài)。

然后輸入以下配置代碼(域名部分自定義更改成你們自己的域名,注釋部分則按需開啟):

#設(shè)置低權(quán)限用戶,為了安全而設(shè)置的 user?nobody;  #工作衍生進(jìn)程數(shù) worker_processes?4;  #設(shè)置錯誤文件存放路徑 #error_log?logs/error.log; #error_log?logs/error.log?notice; #error_log?logs/error.log?info;  #設(shè)置pid存放路徑(pid是控制系統(tǒng)中重要文件) #pid?logs/nginx.pid;  #設(shè)置最大連接數(shù) events{ ??worker_connections?1024; }  http?{ ??#用來設(shè)置日志格式 ??log_format?main?'$remote_addr?-?$remote_user?[$time_local]?"$request"?' ???????????'$status?$body_bytes_sent?"$http_referer"?' ???????????'"$http_user_agent"?"$http_x_forwarded_for"'; ??#用來指定日志文件的存放路徑 ??access_log?/data/wwwlogs/access_nginx.log?main;  ??#開啟高效文件傳輸模式 ??sendfile??????on; ??#防止網(wǎng)絡(luò)阻塞 ??tcp_nopush?????on; ??#防止網(wǎng)絡(luò)阻塞 ??tcp_nodelay?????on; ??#長連接超時時間,單位是秒 ??keepalive_timeout??65; ??#散列表的沖突率,默認(rèn)1024,越大則內(nèi)存消耗更多,但散列key的沖突率會降低,檢索速度就更快 ??types_hash_max_size?2048;  ??#文件擴(kuò)展名與文件類型映射表 ??include???????/usr/local/nginx/conf/mime.types; ??#默認(rèn)文件類型 ??default_type????application/octet-stream;  ??#include?/etc/nginx/conf.d/*.conf;  ??#主要是用于設(shè)置一組可以在proxy_pass和fastcgi_pass指令中使用額代理服務(wù)器,默認(rèn)負(fù)載均衡方式為輪詢 ??upstream?tomcat_client?{ ????server?localhost:8080; ??}  ??#開啟gzip壓縮,開啟后,訪問網(wǎng)頁會自動壓縮 ??#gzip?on;  ??#指定服務(wù)器的名稱和參數(shù) ??server?{ ????listen?80; ????server_name?app.nginxtest.net; ????location?/?{ ??????proxy_pass?http://tomcat_client; ??????proxy_redirect?default; ??????#設(shè)置代理 ??????proxy_set_header?host?$host; ??????proxy_set_header?x-real-ip?$remote_addr; ????} ??} ??server?{ ????listen?80; ????server_name?admin.nginxtest.net; ????location?/?{ ??????proxy_pass?http://tomcat_client; ??????proxy_redirect?default; ??????proxy_set_header?host?$host; ??????proxy_set_header?x-real-ip?$remote_addr; ????} ??} ??server?{ ????listen?80; ????server_name?www.nginxtest.net; ????location?/?{ ??????proxy_pass?http://tomcat_client; ??????proxy_redirect?default; ??????proxy_set_header?host?$host; ??????proxy_set_header?x-real-ip?$remote_addr; ????} ????location?=?/?{ ??????#判斷是否為手機移動端 ??????if?($http_user_agent?~*?'(iphone|ipod|ipad|android|windows?phone|mobile|nokia)')?{ ????????rewrite?.?http://www.nginxtest.net/phone?break; ??????} ??????rewrite?.?http://www.nginxtest.net/pc?break; ????} ??} }

好了就是這么簡單,nginx反向代理配置完畢。下來配置tomcat:

2.配置tomcat部署多個站點

$?ssh?root@192.168.2.100?????????????//ssh連接 #?cd?/usr/local/tomcat #?cp?/usr/local/tomcat/conf/server.xml?/usr/local/tomcat/conf/server.xml_bk?//備份server.xml原文件 #?vi?server.xml??????????????????//用vi編輯器打開文件,然后按鍵盤的i

我們編輯server.xml,engine節(jié)點下添加以下host節(jié)點(節(jié)點中的域名和站點工程目錄需要自定義修改為你們自己的):

<host> ??<context></context></host><host> ??<context></context></host><host> ??<context></context></host>

注意:如果你想要實現(xiàn)直接訪問公網(wǎng)ip無網(wǎng)頁效果,刪除engine節(jié)點下的

<host>..</host>

即可。

輸入完成后按下esc,然后輸入:

:wq!

就可以保存并退出配置文件了。到此,tomcat也配置完畢了。

接下來我們就可以將我們的多個站點工程代碼放在 /data/wwwroot/ 下了。然后啟動nginx和tomcat。

現(xiàn)在可以試一下,分別訪問每個站點的二級域名www.nginxtest.net、admin.nginxtest.net、app.nginxtest.net,我們發(fā)現(xiàn)已經(jīng)可以跳轉(zhuǎn)到對應(yīng)的站點了(和每個站點分別部署一臺服務(wù)器,看到的效果是一樣的)。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊11 分享