一瓮孙、概述
Nginx的特性:
- 反向代理
- 正向代理:在客戶端(瀏覽器)配置代理服務(wù)器唐断,通過(guò)代理服務(wù)器進(jìn)行互聯(lián)網(wǎng)訪問(wèn)。
- 反向代理
- 反向代理杭抠,客戶端對(duì)代理是無(wú)感知的脸甘,因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問(wèn),我們只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器祈争,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端斤程,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器地址菩混,隱藏了真實(shí)服務(wù)器IP地址忿墅。
- 負(fù)載均衡
- 單個(gè)服務(wù)器解決不了,我們?cè)黾臃?wù)器的數(shù)量沮峡,然后將請(qǐng)求分發(fā)到各個(gè)服務(wù)器上,將原先請(qǐng)求集中到單個(gè)服務(wù)器上的情況改為將請(qǐng)求分發(fā)到多個(gè)服務(wù)器上,將負(fù)載分發(fā)到不同的服務(wù)器疚脐,也就是我們所說(shuō)的負(fù)載均衡
- 動(dòng)靜分離
- 為了加快網(wǎng)站的解析速度,可以把動(dòng)態(tài)頁(yè)面和靜態(tài)頁(yè)面由不同的服務(wù)器來(lái)解析邢疙,加快解析速度棍弄。降低原來(lái)單個(gè)服務(wù)器的壓力。
二疟游、Nginx安裝
安裝相關(guān)依賴
gcc
pcre
openssl
zlib
命令
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
查看安裝是否成功
pcre-config --version
安裝Nginx
① 下載nginx呼畸,兩種方式
a. 直接下載
.tar.gz
安裝包,地址:https://nginx.org/en/download.htmlb. 使用
wget
命令下載(推薦)颁虐。確保系統(tǒng)已經(jīng)安裝了wget蛮原,如果沒(méi)有安裝,執(zhí)行 yum install wget 安裝另绩。
wget -c https://nginx.org/download/nginx-1.19.0.tar.gz
② 解壓儒陨、進(jìn)入目錄:
tar -zxvf nginx-1.19.0.tar.gz
cd nginx-1.19.0
③ 配置:
其實(shí)在 nginx-1.12.0 版本中你就不需要去配置相關(guān)東西,默認(rèn)就可以了笋籽。當(dāng)然蹦漠,如果你要自己配置目錄也是可以的。
1.使用默認(rèn)配置
./configure
2.自定義配置(不推薦)
$ ./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注:將臨時(shí)文件目錄指定為/var/temp/nginx车海,需要在/var下創(chuàng)建temp及nginx目錄
④ 編輯安裝
make && make install
在安裝之后笛园,在/usr/local文件夾下會(huì)有一個(gè)nginx文件夾。
查看版本號(hào)(使用nginx操作命令前提條件:必須進(jìn)入nginx的目錄/usr/local/nginx/sbin
.)
./nginx -v
查找安裝路徑:
whereis nginx
⑤ 啟動(dòng)侍芝,停止nginx
# 進(jìn)入Nginx目錄
cd /usr/local/nginx/sbin/
# 啟動(dòng)Nginx
./nginx
# 停止Nginx
./nginx -s stop
./nginx -s quit
# 重新加載Nginx
./nginx -s reload
查詢nginx進(jìn)程:
ps aux|grep nginx
啟動(dòng)之后用瀏覽器訪問(wèn)服務(wù)器的IP地址就可以看到Nginx了喘沿。
查看防火墻開放的端口:
firewall-cmd --list-all
設(shè)置開放的端口號(hào):
sudo firewall cmd --add-port=80/tcp --permanent
防火墻:
systemctl start firewalld.service 啟動(dòng)
systemctl enable firewalld.service 開機(jī)啟動(dòng)
systemctl stop firewalld.service 停止
systemctl disable firewalld.service 禁止開機(jī)啟動(dòng)
systemctl status firewalld.service 查看狀態(tài)
firewall-cmd --state 查看狀態(tài)
三、Nginx常用命令
要進(jìn)入Nginx的目錄才能使用Nginx的命令竭贩,Nginx目錄:/usr/local/nginx/sbin
-
查看Nginx版本號(hào)
./nginx -v
-
啟動(dòng)Nginx
./nginx
-
重加載配置文件,不用重啟Nginx
./nginx -s reload
四莺禁、Nginx的配置文件
配置文件的位置:/usr/local/nginx/conf/nginx.conf
Nginx的配置文件有三部分:
- 全局塊
- Events塊
- Http塊
全局塊:
- 從配置文件開始到events之前的內(nèi)容留量,主要會(huì)設(shè)置一些影響Nginx服務(wù)器整體運(yùn)行的命令配置指令。
- 例如:
worker_processes 1;
表示Nginx處理并發(fā)的數(shù)量。
Events塊:
- Events塊設(shè)計(jì)的指令主要影響Nginx服務(wù)器與用戶的網(wǎng)絡(luò)連接楼熄。
- 例如:
worker_connections 1024;
表示Nginx支持的最大連接數(shù)忆绰。
Http塊:
- Http塊又包括Http全局塊和Server塊。
- Http全局塊的指令包括:文件引入可岂、MIME-TYPE定義错敢、日志自定義、連接超時(shí)時(shí)間缕粹、單鏈接請(qǐng)求數(shù)上限等稚茅。
五、Nginx配置反向代理
5.1. 反向代理1
目的:實(shí)現(xiàn)在瀏覽器中輸入www.123.com跳轉(zhuǎn)到服務(wù)器的Tomcat主頁(yè)平斩。
5.1.1. 準(zhǔn)備工作
準(zhǔn)備工作:
安裝jdk
安裝亚享、啟動(dòng)Tomcat
安裝JDK
sudo yum install java-1.8.0
查看Java版本
java -version
下載Tomcat(直接下載很慢的,可以把安裝包下載下來(lái)再放到服務(wù)器上)
wget https://downloads.apache.org/tomcat/tomcat-7/v7.0.107/bin/apache-tomcat-7.0.107.tar.gz
在/usr/local目錄下新建tomcat文件夾
cd /usr/local
mkdir tomcat
返回到Tomcat壓縮包的下載目錄绘面,解壓壓縮文件到tomcat文件夾下
sudo tar -zxvf apache-tomcat-7.0.107.tar.gz -C /usr/local/tomcat
進(jìn)入到 Tomcat 的命令目錄
cd /usr/local/tomcat/apache-tomcat-7.0.107/bin
啟動(dòng)tomcat
./startup.sh
對(duì)外開放訪問(wèn)端口(防火墻如果已經(jīng)關(guān)閉就不用了)
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
在瀏覽器訪問(wèn)服務(wù)器ip:8080
如果是使用的阿里云等服務(wù)器欺税,訪問(wèn)不了可以在cmd中輸入命令telnet 服務(wù)器ip 端口
,如果無(wú)法連同揭璃,說(shuō)明端口沒(méi)有開晚凿,可能是實(shí)例安全組沒(méi)有配置開放這個(gè)端口。
5.1.2. 配置
在windows系統(tǒng)的host文件進(jìn)行域名和ip對(duì)應(yīng)關(guān)系的配置瘦馍。
host文件存放目錄:C:\Windows\System32\drivers\etc
用編輯器打開host文件歼秽,將ip地址和url放到文件中,如果hosts文件無(wú)法編輯扣墩,去修改一下權(quán)限哲银,或者看一下文件是不是只讀的。
修改權(quán)限參考:https://jingyan.baidu.com/article/624e7459b194f134e8ba5a8e.html
這時(shí)候在瀏覽器訪問(wèn)www.123.com:8080可以訪問(wèn)到Tomcat呻惕,但是我們的目的是使用www.123.com就可以直接訪問(wèn)Tomcat荆责。所以繼續(xù)配置。
在Nginx中配置反向代理
將server中的server_name改為我們的服務(wù)器IP(原來(lái)的server_name是localhost)
在server的location部分亚脆,在root和index之間加上如下內(nèi)容:
proxy_pass http://127.0.0.1:8080;
啟動(dòng)Nginx或重新加載配置文件做院。
在瀏覽器輸入www.123.com
來(lái)訪問(wèn)。
就可以訪問(wèn)了濒持!
5.2. 反向代理2
目的:當(dāng)訪問(wèn)服務(wù)器ip:9001/edu/
键耕,跳轉(zhuǎn)到8080端口,當(dāng)訪問(wèn)服務(wù)器ip:9001/vod/
柑营,跳轉(zhuǎn)到8081端口屈雄。
5.2.1. 準(zhǔn)備工作
在反向代理1的基礎(chǔ)上,還要準(zhǔn)備另一個(gè)tomcat
再創(chuàng)建一個(gè)tomcat02目錄官套,將之前下載的tomcat解壓到tomcat02目錄中去酒奶。
tomcat02目錄也是新建在了/usr/local/下蚁孔。
mkdir tomcat02
解壓
sudo tar -zxvf apache-tomcat-7.0.107.tar.gz -C /usr/local/tomcat02
進(jìn)入tomcat02下的tomcat目錄
cd /usr/local/tomcat02/apache-tomcat-7.0.107
要修改這個(gè)tomcat的幾個(gè)端口,配置文件在conf/server.xml中
vim conf/server.xml
修改8005為8015惋嚎,8080為8081
保存退出后杠氢,啟動(dòng)tomcat
cd bin
./startup.sh
在瀏覽器輸入服務(wù)器ip:8080
和服務(wù)器ip:8081
看看是否都可以訪問(wèn)到tomcat,注意8081的端口是否開啟了另伍。
在tomcat目錄的apache-tomcat-7.0.107下的webapps下鼻百,新建文件夾edu
cd /usr/local/tomcat/apache-tomcat-7.0.107/webapps
mkdir edu
cd edu
vim a.html
在a.html輸入如下內(nèi)容
<h1>edu:8080</h1>
<h2>hello!</h2>
保存退出
在瀏覽器訪問(wèn)服務(wù)器ip:8080/edu/a.html
查看效果
同樣的方式在tomcat02下也新建這樣一個(gè)頁(yè)面
cd /usr/local/tomcat02/apache-tomcat-7.0.107/webapps
mkdir vod
cd vod
vim a.html
在a.html輸入如下內(nèi)容
<h1>vod:8081</h1>
<h2>hello!</h2>
保存退出
在瀏覽器訪問(wèn)服務(wù)器ip:8081/vod/a.html
查看效果
5.2.2. 配置
Nginx的配置文件目錄為/usr/local/nginx/conf
cd /usr/local/nginx/conf
vim nginx.conf
在配置文件的最后一個(gè)}
前加上如下內(nèi)容,要替換成自己的服務(wù)器IP
server {
listen 9001;
server_name 服務(wù)器ip;
location ~/edu/{
proxy_pass http://127.0.0.1:8080;
}
location ~/vod/{
proxy_pass http://127.0.0.1:8081;
}
}
啟動(dòng)Nginx或重新加載配置文件摆尝,注意9001端口要開放温艇。
最后訪問(wèn)服務(wù)器IP:9001/edu/a.html
和服務(wù)器IP:9001/vod/a.html
六、Nginx配置負(fù)載均衡
目的:訪問(wèn)服務(wù)器IP/edu/a.html
的時(shí)候结榄,實(shí)現(xiàn)負(fù)載均衡效果中贝,使訪問(wèn)平均到8080和8081端口去。
6.1. 準(zhǔn)備工作
還是需要兩個(gè)Tomcat臼朗,這兩個(gè)Tomcat的webapps下都要有edu目錄邻寿,edu下存放一個(gè)a.html頁(yè)面。
在前面的基礎(chǔ)上视哑,我們只需要在tomcat02中的webapps文件下新建edu目錄和a.html文件即可绣否。
cd /usr/local/tomcat02/apache-tomcat-7.0.107/webapps
mkdir edu
cd vod
cp a.html ../edu
進(jìn)入到edu下查看是否有a.html文件。
cd ../edu
ls
可以修改一下這個(gè)a.html文件的內(nèi)容挡毅。
6.2. 配置
進(jìn)入到Nginx的配置文件
cd /usr/local/nginx/conf
vim nginx.conf
首先蒜撮,在http塊中,加入如下內(nèi)容
upstream MyTomcatServer {
server 118.31.45.92:8080;
server 118.31.45.92:8081;
}
再將server中的server_name改為服務(wù)器的IP地址
最后在location的root和index之間加上一行proxy_pass http://MyTomcatServer;
這里的MyTomcatServer是在http中配置的跪呈,是剛剛填寫的upstream后面的內(nèi)容段磨。
然后退出保存,重新載入Nginx配置文件耗绿。
在瀏覽器訪問(wèn)http://服務(wù)器IP/edu/a.html
苹支,然后不斷刷新這個(gè)頁(yè)面,會(huì)發(fā)現(xiàn)頁(yè)面在Tomcat和Tomcat02的兩個(gè)edu/a.html之間跳轉(zhuǎn)误阻。
七债蜜、Nginx配置動(dòng)靜分離
Nginx動(dòng)靜分離簡(jiǎn)單來(lái)說(shuō)就是把動(dòng)態(tài)請(qǐng)求和靜態(tài)請(qǐng)求分開。
7.1. 準(zhǔn)備工作
在Linux系統(tǒng)中準(zhǔn)備一些靜態(tài)資源究反。在任意位置新建目錄rm_test寻定,在這個(gè)目錄下新建兩個(gè)文件夾page和pic。在page文件夾下放一些Html頁(yè)面精耐,在pic文件夾下放一些圖片狼速,可以使用Xshell的Xftp工具來(lái)拖動(dòng)文件。
在page文件下卦停,我放置了a.html唐含;在pic文件夾下浅浮,放置了1.jpg和2.jpg。
7.2. 配置
在Nginx配置文件中配置捷枯。
先把server的server_name改成服務(wù)器的IP。
然后在server_name下面的location后加上目錄page专执,root填寫為rm_test淮捆。(不要寫反了)
在location下再寫一個(gè)location,內(nèi)容如下:
也可以在第二個(gè)root下面再加一行autoindex on;
保存退出本股,重新加載配置文件攀痊。
用瀏覽器訪問(wèn):http://服務(wù)器IP/page/a.html
,查看效果:
訪問(wèn)http://服務(wù)器IP/pic/1.jpg
拄显,查看效果
如果配置了剛剛的autoindex on;苟径,訪問(wèn)http://服務(wù)器IP/pic
可查看到如下效果: