Nginx服務(wù)器簡介:
金臺網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。Nginx (engine x) 是一個高性能的HTTP和反向代理服務(wù)器,也是一個IMAP/POP3/SMTP服務(wù)器。其特點是占用內(nèi)存少,并發(fā)能力強,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
Nginx對比Apache優(yōu)點:
1、輕量級,采用 C 進行編寫,同樣的 web 服務(wù),會占用更少的內(nèi)存及資源
2、抗并發(fā),nginx 以 epoll and kqueue 作為開發(fā)模型,處理請求是異步非阻塞的,負(fù)載能力比 apache 高很多,而 apache 則是阻塞型的。在高并發(fā)下 nginx 能保持低資源低消耗高性能 ,而 apache 在 PHP 處理慢或者前端壓力很大的情況下,很容易出現(xiàn)進程數(shù)飆升,從而拒絕服務(wù)的現(xiàn)象。
3、nginx 處理靜態(tài)文件好,靜態(tài)處理性能比 apache 高三倍以上
4、nginx 作為負(fù)載均衡服務(wù)器,支持 7 層負(fù)載均衡
5、nginx 本身就是一個反向代理服務(wù)器,而且可以作為非常優(yōu)秀的郵件代理服務(wù)器
6、nginx 配置簡潔,正則配置讓很多事情變得簡單,而且改完配置能使用 -t 測試配置有沒有問題,apache 配置復(fù)雜 ,重啟的時候發(fā)現(xiàn)配置出錯了,會很崩潰
前言: 如果你還沒有自己的服務(wù)器 請參考教你從零開始搭建阿里云ESC服務(wù)器此文章會詳細(xì)的介紹 如何搭建自己的服務(wù)器 并且此文章基于上述服務(wù)器搭建教程目錄結(jié)構(gòu)等 此文章為新手教程文章 高手勿噴
一、安裝所需要的環(huán)境
1、gcc 安裝
安裝 nginx 需要先將官網(wǎng)下載的源碼進行編譯,編譯依賴 gcc 環(huán)境,如果沒有 gcc 環(huán)境,則需要安裝
yum install gcc-c++
2、PCRE pcre-devel 安裝
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發(fā)的一個二次開發(fā)庫。nginx也需要此庫。命令:
yum install -y pcre pcre-devel
3、zlib 安裝
zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內(nèi)容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫
yum install -y zlib zlib-devel
4、OpenSSL 安裝
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協(xié)議,并提供豐富的應(yīng)用程序供測試或其它目的使用
yum install -y openssl openssl-devel
二、下載并安裝Nginx
1、下載nginx(不推薦)
直接下載.gz安裝包 官網(wǎng)地址:https://nginx.org/en/download.html
2、使用命令下載
wget -c https://nginx.org/download/nginx-1.12.2.tar.gz
這里使用的是最新穩(wěn)定版本Nginx 下載后如圖(會下載到當(dāng)前目錄下)
3、解壓nginx安裝包
tar -zxvf nginx-1.12.2.tar.gz
4、使用默認(rèn)配置(這里推薦使用默認(rèn)配置 )
cd nginx-1.12.2 ./configure
5、編譯安裝
make make install
注意:代碼要一行一行執(zhí)行 防止出現(xiàn)未知錯誤
安裝成功之后 安裝的路徑在 /usr/local/nginx 此文件夾內(nèi)
6、Nginx一些命令
首先進入nginx的sbin目錄下、
cd /usr/local/nginx/sbin/
啟動命令:
./nginx
關(guān)閉命令:
./nginx -s stop
或
./nginx -s quit
./nginx -s quit:此方式停止步驟是待nginx進程處理任務(wù)完畢進行停止。
./nginx -s stop:此方式相當(dāng)于先查出nginx進程id再使用kill命令強制殺掉進程。
從新加載配置文件(用于修改nginx配置文件后使其生效)
./nginx -s reload
7、啟動nginx
./nginx
nginx啟動以后 在地址欄輸入你服務(wù)器外網(wǎng)的ip地址 如果出現(xiàn)如下圖所示 那么恭喜你nginx安裝成功
Nginx常用功能
一、開啟反向代理 并設(shè)置動靜分離
什么是反向代理 :
客戶端本來可以直接通過HTTP協(xié)議訪問某網(wǎng)站應(yīng)用服務(wù)器,網(wǎng)站管理員可以在中間加上一個Nginx,客戶端請求Nginx,Nginx請求應(yīng)用服務(wù)器,然后將結(jié)果返回給客戶端,此時Nginx就是反向代理服務(wù)器。
什么是動靜分離:
何謂動?何謂靜呢?那我們java來說jsp、servlet等就是動,因為其離開我們的tomcat服務(wù)器的支持就會無法正常工作。而js、css等文件就是靜了。因為離開tomcat他一樣能正常工作啊! 分開的話 減少tomcat的負(fù)擔(dān)
步驟:
1、移動到nginx文件夾里面的bin文件夾
cd /usr/local/nginx/conf/
2、編輯nginx.conf文件
注意:這里說一下 如果不是特別熟悉linux的編輯器 那編輯起來簡直就是很麻煩
這時候我們可以使用xftp5 將此配置文件拖到電腦里面 用window的編輯器來編輯會好的多 編輯以后在上傳回去 當(dāng)然了 教程還是要用vi編輯的(不熟悉vim)
vi nginx.conf
在配置文件中server{}標(biāo)簽的上面 http{}標(biāo)簽的里面添加如下代碼
配置反向代理服務(wù)器
#tomcat反向代理服務(wù)器 upstream xx.com { server localhost:8080 weight=1; }
在配置文件中 #開頭的是注釋代碼
xx.com為此代理服務(wù)器的地址 記住 后面要用到
localhost:8080 是tomcat服務(wù)器在你此服務(wù)器的地址
大概位置如圖所示
3、配置代理參數(shù)
與server{}標(biāo)簽同級添加如下配置代碼
4、設(shè)置動靜分離配置代碼
將以下代碼添加到server{}標(biāo)簽內(nèi)
location ~.(jsp|do)$ { #動態(tài)文件走tomcat服務(wù)器 proxy_pass http://hs.com; } location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { #靜態(tài)文件走nginx動態(tài)服務(wù)器 #這里需要指定一個靜態(tài)文件的地址 #在部署項目的時候需要將項目放到此文件夾內(nèi) root /web_project; expires 30d; #緩存30天 } location ~ .*.(js|css)?$ { #靜態(tài)文件走nginx動態(tài)服務(wù)器 #這里需要指定一個靜態(tài)文件的地址 #在部署項目的時候需要將項目放到此文件夾內(nèi) root /web_project; expires 30d; #緩存30天 }
ps:靜態(tài)文件夾可以按照自己的需求來定 我將靜態(tài)文件夾放到根下 所以要在根目錄下創(chuàng)建 web_project文件夾 項目部署的時候放在tomcat 里面一份 放到此文件夾里面一份
動靜分離到此結(jié)束 可以做一個小測試 寫一個jsp界面 里面帶一張圖片 啟動tomcat 啟動nginx 將項目部署到tomcat 打開網(wǎng)頁 圖片不會顯示 將項目部署到靜態(tài)文件夾下面 刷新網(wǎng)頁 圖片正常顯示 那么就成功了
二、開啟壓縮傳輸
何為壓縮傳輸?顧名思義 就是傳輸文件的時候壓縮了以后在傳唄 減少服務(wù)器負(fù)擔(dān) 傳輸快?。?/p>
步驟1、
在配置文件中server{}標(biāo)簽的上面 http{}標(biāo)簽的里面添加如下代碼
#開啟壓縮傳輸; gzip on; gzip_min_length 1k; #最小1K gzip_buffers 16 64K; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain application/x-javascript text/css application/xml application/javascript; gzip_vary on;
重啟nginx 搞定!
三、配置tomcat服務(wù)器集群
何為集群?
一個tomcat服務(wù)器支持的連接數(shù)是有限的 如果一瞬間突然訪問量暴增 那么毫無疑問 tomcat肯定掛掉 如果使用集群 將流量平均分開 一個掛掉另一個頂上 這樣以來保證了服務(wù)器不掛掉 而且還加大了并發(fā)量
步驟1、
其實吧這里有點小問題 集群以后是有session共享問題的 好
盡請期待小編的下一篇文章
:使用redies+nginx+tomcat進行集群并解決session共享
有些同學(xué)可能會怕配置文件配置不對 這里給出我的整體配置 附加詳細(xì)注釋
#啟動進程,通常設(shè)置成和cpu的數(shù)量相等 worker_processes 1; #全局錯誤日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #工作模式及連接數(shù)上限 events { #epoll是多路復(fù)用IO(I/O Multiplexing)中的一種方式, #僅用于linux2.6以上內(nèi)核,可以大大提高nginx的性能 #use epoll; #單個后臺worker process進程的并發(fā)鏈接數(shù) worker_connections 1024; # 并發(fā)總數(shù)是 worker_processes 和 worker_connections 的乘積 # 即 max_clients = worker_processes * worker_connections # 在設(shè)置了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什么 # 為什么上面反向代理要除以4,應(yīng)該說是一個經(jīng)驗值 # 根據(jù)以上條件,正常情況下的Nginx Server可以應(yīng)付的連接數(shù)為:4 * 8000 = 32000 # worker_connections 值的設(shè)置跟物理內(nèi)存大小有關(guān) # 因為并發(fā)受IO約束,max_clients的值須小于系統(tǒng)可以打開的文件數(shù) # 而系統(tǒng)可以打開的文件數(shù)和內(nèi)存大小成正比,一般1GB內(nèi)存的機器上可以打開的文件數(shù)大約是10萬左右 # 我們來看看360M內(nèi)存的VPS可以打開的文件句柄數(shù)是多少: # $ cat /proc/sys/fs/file-max # 輸出 34336 # 32000 < 34336,即并發(fā)連接總數(shù)小于系統(tǒng)可以打開的文件句柄總數(shù),這樣就在操作系統(tǒng)可以承受的范圍之內(nèi) # 所以,worker_connections 的值需根據(jù) worker_processes 進程數(shù)目和系統(tǒng)可以打開的文件總數(shù)進行適當(dāng)?shù)剡M行設(shè)置 # 使得并發(fā)總數(shù)小于操作系統(tǒng)可以打開的文件數(shù)目 # 其實質(zhì)也就是根據(jù)主機的物理CPU和內(nèi)存進行配置 # 當(dāng)然,理論上的并發(fā)總數(shù)可能會和實際有所偏差,因為主機還有其他的工作進程需要消耗系統(tǒng)資源。 # ulimit -SHn 65535 } http { #設(shè)定mime類型,類型由mime.type文件定義 include mime.types; default_type application/octet-stream; #sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來輸出文件, #對于普通應(yīng)用,必須設(shè)為 on, #如果用來進行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為 off, #以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime. sendfile on; #連接超時時間 keepalive_timeout 65; #開啟gzip壓縮 gzip on; gzip_min_length 1k; #最小1K gzip_buffers 16 64K; gzip_http_version 1.1; gzip_comp_level 6; gzip_types text/plain application/x-javascript text/css application/xml application/javascript; gzip_vary on; #配置代理參數(shù) proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; #設(shè)定請求緩沖 proxy_connect_timeout 65; proxy_send_timeout 65; proxy_read_timeout 65; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; #tomcat服務(wù)器組 upstream hs.com { server localhost:8080 weight=1; } #設(shè)定虛擬主機配置 server { #偵聽80端口 listen 80; #定義使用本地地址訪問 server_name localhost; #設(shè)置字符編碼 charset UTF-8; #access_log logs/host.access.log main; #默認(rèn)請求 location / { root html; index index.html index.htm; } location ~.(jsp|do)$ { #動態(tài)文件走tomcat服務(wù)器 proxy_pass http://hs.com; } location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { #靜態(tài)文件走nginx動態(tài)服務(wù)器 #這里需要指定一個靜態(tài)文件的地址 #在部署項目的時候需要將項目放到此文件夾內(nèi) root /web_project; expires 30d; #緩存30天 } location ~ .*.(js|css)?$ { #靜態(tài)文件走nginx動態(tài)服務(wù)器 #這里需要指定一個靜態(tài)文件的地址 #在部署項目的時候需要將項目放到此文件夾內(nèi) root /web_project; expires 30d; #緩存30天 } # 定義錯誤提示頁面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
沒學(xué)會?寫的太羅嗦? 沒關(guān)系 小編這有一套nginx學(xué)習(xí)視頻
鏈接:https://pan.baidu.com/s/1pM4PDdL 密碼:emz2