Centos上搭建Nginx方法詳解
時(shí)間:2023-08-03 23:57:01 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-08-03 23:57:01 來源:網(wǎng)站運(yùn)營
Centos上搭建Nginx方法詳解:
什么是正向代理和反向代理
A同學(xué)在大眾創(chuàng)業(yè)的大時(shí)代背景下開啟他的創(chuàng)業(yè)之路,目前他遇到的最大的一個(gè)問題就是啟動(dòng)資金,于是他決定去找馬云爸爸借錢,可想而知,最后碰一鼻子灰回來了,情急之下,他想到一個(gè)辦法,找關(guān)系開后門,經(jīng)過一番消息打探,原來A同學(xué)的大學(xué)老師王老師是馬云的同學(xué),于是A同學(xué)找到王老師,托王老師幫忙去馬云那借500萬過來,當(dāng)然最后事成了。不過馬云并不知道這錢是A同學(xué)借的,馬云是借給王老師的,最后由王老師轉(zhuǎn)交給A同學(xué)。這里的王老師在這個(gè)過程中扮演了一個(gè)非常關(guān)鍵的角色,就是代理,也可以說是正向代理,王老師代替A同學(xué)辦這件事,這個(gè)過程中,真正借錢的人是誰,馬云是不知道的,這點(diǎn)非常關(guān)鍵。
我們常說的代理也就是只正向代理,正向代理的過程,它隱藏了真實(shí)的請求客戶端,服務(wù)端不知道真實(shí)的客戶端是誰,客戶端請求的服務(wù)都被代理服務(wù)器代替來請求,某些科學(xué)上網(wǎng)工具扮演的就是典型的正向代理角色。用瀏覽器訪問
http://www.google.com時(shí),被殘忍的block,于是你可以在國外搭建一臺(tái)代理服務(wù)器,讓代理幫我去請求
http://google.com,代理把請求返回的相應(yīng)結(jié)構(gòu)再返回給我。
大家都有過這樣的經(jīng)歷,撥打10086客服電話,可能一個(gè)地區(qū)的10086客服有幾個(gè)或者幾十個(gè),你永遠(yuǎn)都不需要關(guān)心在電話那頭的是哪一個(gè),叫什么,男的,還是女的,漂亮的還是帥氣的,你都不關(guān)心,你關(guān)心的是你的問題能不能得到專業(yè)的解答,你只需要撥通了10086的總機(jī)號(hào)碼,電話那頭總會(huì)有人會(huì)回答你,只是有時(shí)慢有時(shí)快而已。那么這里的10086總機(jī)號(hào)碼就是我們說的反向代理??蛻舨恢勒嬲峁┓?wù)人的是誰。反向代理隱藏了真實(shí)的服務(wù)端,當(dāng)我們請求
http://ww.baidu.com 的時(shí)候,就像撥打10086一樣,背后可能有成千上萬臺(tái)服務(wù)器為我們服務(wù),但具體是哪一臺(tái),你不知道,也不需要知道,你只需要知道反向代理服務(wù)器是誰就好了,
http://www.baidu.com 就是我們的反向代理服務(wù)器,反向代理服務(wù)器會(huì)幫我們把請求轉(zhuǎn)發(fā)到真實(shí)的服務(wù)器那里去。Nginx就是性能非常好的反向代理服務(wù)器,用來做負(fù)載均衡。
兩者的區(qū)別在于代理的對象不一樣:正向代理是為客戶端代理,反向代理是為服務(wù)端代理。
nginx能實(shí)現(xiàn)負(fù)載均衡,什么是負(fù)載均衡呢?就是我的項(xiàng)目部署在不同的服務(wù)器上,但是通過統(tǒng)一的域名進(jìn)入,nginx則對請求進(jìn)行分發(fā),減輕了服務(wù)器的壓力。
在上面這兩種情況下,nginx服務(wù)器的作用都只是作為分發(fā)服務(wù)器,真正的內(nèi)容,我們可以放在其他的服務(wù)器上,這樣來,還能起到一層安全隔壁的作用,nginx作為隔離層。
其次,nginx還能解決跨域的問題。
之前我們搭建網(wǎng)站的時(shí)候,把war包放到tomcat下就能運(yùn)行起來了,為什么部署上線的時(shí)候,又用到了nginx呢?
nginx可以做多臺(tái)服務(wù)器的負(fù)載均衡,當(dāng)用戶非常少的時(shí)候,可以用一臺(tái)服務(wù)直接部署web環(huán)境,那么當(dāng)用戶達(dá)到百萬級(jí)別,千萬級(jí)別的時(shí)候,就需要增加服務(wù)器,多臺(tái)服務(wù)器又如何管理協(xié)作的呢?
nginx有以下功能:
1.靜態(tài)HTTP服務(wù)器-Nginx是一個(gè)HTTP服務(wù)器,可以將服務(wù)器上的靜態(tài)文件(如HTML、圖片)通過HTTP協(xié)議展現(xiàn)給客戶端。
2.反向代理服務(wù)器-客戶端本來可以直接通過HTTP協(xié)議訪問某網(wǎng)站應(yīng)用服務(wù)器,網(wǎng)站管理員可以在中間加上一個(gè)Nginx,客戶端請求Nginx,Nginx請求應(yīng)用服務(wù)器,然后將結(jié)果返回給客戶端,此時(shí)Nginx就是反向代理服務(wù)器。
3.負(fù)載均衡-當(dāng)網(wǎng)站訪問量非常大,網(wǎng)站站長開心賺錢的同時(shí),也攤上事兒了。因?yàn)榫W(wǎng)站越來越慢,一臺(tái)服務(wù)器已經(jīng)不夠用了。于是將同一個(gè)應(yīng)用部署在多臺(tái)服務(wù)器上,將大量用戶的請求分配給多臺(tái)機(jī)器處理。同時(shí)帶來的好處是,其中一臺(tái)服務(wù)器萬一掛了,只要還有其他服務(wù)器正常運(yùn)行,就不會(huì)影響用戶使用。
4.虛擬主機(jī)-有的網(wǎng)站訪問量大,需要負(fù)載均衡。然而并不是所有網(wǎng)站都如此出色,有的網(wǎng)站,由于訪問量太小,需要節(jié)省成本,將多個(gè)網(wǎng)站部署在同一臺(tái)服務(wù)器上。
5.FastCGI-Nginx本身不支持PHP等語言,但是它可以通過FastCGI來將請求扔給某些語言或框架處理(例如PHP、Python、Perl)。
什么是nginx?
Nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時(shí)也是一個(gè)IMAP、POP3、SMTP代理服務(wù)器;
Nginx可以作為一個(gè)HTTP服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,另外Nginx可以作為反向代理進(jìn)行負(fù)載均衡的實(shí)現(xiàn)。
正向代理,代理的是客戶端,比如小伙伴們平??茖W(xué)上網(wǎng),訪問google網(wǎng)站就是用到的正向代理。
反向代理,它代理的是服務(wù)端,主要用于服務(wù)器集群分布式部署的情況下,反向代理隱藏了服務(wù)器的信息。
nginx依賴包安裝
先安裝依賴包
1.gcc安裝:安裝 nginx 需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴 gcc 環(huán)境,如果沒有 gcc 環(huán)境,則需要安裝
2.PCRE(Perl Compatible Regular Expressions) 是一個(gè)Perl庫,包括 perl 兼容的正則表達(dá)式庫。
nginx 的 http 模塊使用 pcre 來解析正則表達(dá)式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發(fā)的一個(gè)二次開發(fā)庫。nginx也需要此庫
3.zlib庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內(nèi)容進(jìn)行 gzip ,所以需要在 Centos 上安裝 zlib 庫。
4.OpenSSL 是一個(gè)強(qiáng)大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協(xié)議,并提供豐富的應(yīng)用程序供測試或其它目的使用。
nginx 不僅支持 http 協(xié)議,還支持 https(即在ssl協(xié)議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
nginx下載與安裝
直接下載.tar.gz安裝包,下載地址:
https://nginx.org/en/download.html把下載的包放到/usr/local/nginx目錄,然后解壓安裝到nginx-1.12.0當(dāng)前目錄,make編譯安裝
[root@yoyo sbin]# cd ~
[root@yoyo ~]# cd /usr/local/
[root@yoyo local]# mkdir nginx
[root@yoyo local]# cd nginx
[root@yoyo nginx]# wget -c
https://nginx.org/download/nginx-1.12.0.tar.gz[root@yoyo nginx]# tar -zxvf nginx-1.12.0.tar.gz
[root@yoyo nginx]# cd nginx-1.12.0
# 安裝到當(dāng)前目錄 [root@yoyo nginx]# ./configure
[root@yoyo nginx]# make
[root@yoyo nginx]# make install
到此為止環(huán)境已經(jīng)安裝好,接下來啟動(dòng)nginx服務(wù)
[root@yoyo nginx]# cd /usr/local/nginx/sbin/
[root@yoyo nginx]# ./nginx
開放80端口:
firewall-cmd--add-port=80/tcp --permanent
firewall-cmd --add-port=80/udp --permanent
firewall-cmd --reload
啟動(dòng)服務(wù)后,nginx默認(rèn)是在80端口啟動(dòng)的,在瀏覽器輸入
http://192.168.xxx.xxx:80/ (80端口默認(rèn)可以省略),能正常訪問到頁面,說明服務(wù)啟動(dòng)成功
相關(guān)指令
先cd到/usr/local/nginx/sbin/
1.啟動(dòng)服務(wù)
./nginx
2.停止服務(wù),此方式停止步驟是待nginx進(jìn)程處理任務(wù)完畢進(jìn)行停止。
./nginx -s stop
3.退出服務(wù),此方式相當(dāng)于先查出nginx進(jìn)程id再使用kill命令強(qiáng)制殺掉進(jìn)程。
./nginx -s quit
4.重新加載,當(dāng) ngin x的配置文件 nginx.conf 修改后,要想讓配置生效需要重啟 nginx,使用-s reload不用先停止 ngin x再啟動(dòng) nginx 即可將配置信息在 nginx 中生效
./nginx -s reload
5.查詢nginx進(jìn)程
ps aux|grep nginx
修改nginx啟動(dòng)端口
如果80端口之前已經(jīng)使用過了,可以修改nginx的服務(wù)端口,先cd到/usr/local/nginx/conf目錄為了保險(xiǎn)起見,編輯前先備份下原來的文件:cp nginx.confnginx.conf.bak
vim打開后,找到服務(wù)端口listen 80這段,輸入鍵盤上i鍵后編輯,改成81
編輯完成后按Esc鍵,輸入:wq保存退出
修改后重新加載下配置文件
cd /usr/local/nginx/sbin/
./nginx -s reload
最后,開放81端口
開放81端口:
firewall-cmd --add-port=81/tcp --permanent
firewall-cmd --add-port=81/udp --permanent
firewall-cmd --reload