Redis 閱讀筆記-字典
目錄
- 安裝Nginx
- 常用命令
- Nginx配置反向代理
- 搞清楚proxy_pass 後的 /的區別
- location中的正則匹配
- Nginx負載均衡
- 搞清楚root後的/ 區別
- Nginx動靜分離
- Nginx配置高可用的叢集
安裝Nginx
一.
從nginx官網下載tar包
二.
1). 然後下載pcre檔案依賴
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
2). 解壓pcere
3).在pcere目錄下
./configure
4). 編譯並安裝pcere
make && make install
- .安裝 openssl 、 zlib 、 gcc 依賴
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
三.
1). 進入nginx目錄
./configure
2). 安裝nginx
make && make install
3). 進入 目錄 /usr/local/nginx/sbin/nginx 啟動服務
四
開放防火牆
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd –reload
常用命令
linux
以下命令都在/usr/local/nginx/sbin
目錄下執行
- 啟動nginx
./nginx
- 關閉
./nginx -s stop
- 重啟(linux下會熱部署)
./nginx -s reload
- windows
一下命令都在解壓後的視窗執行
- 啟動nginx
nginx.exe
- 關閉
nginx.exe -s stop
- 重啟
nginx.exe -s reload
- 檢視版本
./nginx -v
Nginx配置反向代理
訪問linux主機地址自動會監聽80埠,所以不用手動輸入埠
首先來到nginx安裝目錄
先複製一份原檔案,然後再修改配置檔案
修改配置檔案
cd conf
vim nginx.conf
配置server_name 和 proxy_pass
表示訪問server_name的域名,跳轉到proxy_pass 指定的地址
需要開放80和8080埠
這裡的localhost 指的是linux上的本機ip 127.0.0.1
修改windows HOST 檔案
來到如下位置
再HOSTS中新增如下配置
192.168.1.130 www.chz.com
表示訪問 www.chz.com
域名匹配 192.168.1.130
這裡的ip是linux 主機的ip
nginx接收到訪問www.chz.com
的請求, 就會轉發到proxy_pass
此時,使用者並不知道訪問的具體伺服器這就是反向代理
搞清楚proxy_pass 後的 /的區別
Nginx的官網將proxy_pass分為兩種型別:一種是隻包含IP和埠號的(連埠之後的/
也沒有,這裡要特別注意),比如proxy_pass http://localhost:8080
,這種方式稱為不帶URI方式;另一種是在埠號之後有其他路徑的,包含了只有單個/
的如proxy_pass http://localhost:8080/
,以及其他路徑,比如proxy_pass http://localhost:8080/abc
。
也即:proxy_pass http://localhost:8080
和proxy_pass http://localhost:8080/
(多了末尾的/
)是不同的的處理方式,
而proxy_pass http://localhost:8080/
和proxy_pass http://localhost:8080/abc
是相同的處理方式。
對於不帶URI方式,nginx將會保留location中路徑部分及以前路徑,比如:
location /api1/ {
proxy_pass http://localhost:8080;
}
在訪問http://localhost/api1/xxx
時,會代理http://localhost:8080/api1/xxx
location ~/ucenter/ {
proxy_pass http://localhost:8006;
}
在訪問http://localhost/api/ucenter/hello
, 會代理到http:localhost:8006/api/ucenter/hello
對於帶URI方式,nginx將使用諸如alias的替換方式對URL進行替換,並且這種替換隻是字面上的替換,比如:
location /api2/ {
proxy_pass http://localhost:8080/;
}
當訪問http://localhost/api2/xxx
時,http://localhost/api2/
(注意最後的/
)被替換成了http://localhost:8080/
,然後再加上剩下的xxx
,於是變成了http://localhost:8080/xxx
。
location /api5/ {
proxy_pass http://localhost:8080/haha;
}
當訪問http://localhost/api5/xxx
時,http://localhost/api5/
被替換成了http://localhost:8080/haha
,請注意這裡haha
後面沒有/
,然後再加上剩下的xxx
,即http://localhost:8080/haha
+xxx
=http://localhost:8080/hahaxxx
location中的正則匹配
參考: https://www.cnblogs.com/jpfss/p/10418150.html
=
開頭表示精確匹配^~
開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。以xx開頭~
開頭表示區分大小寫的正則匹配 以xx結尾~*
開頭表示不區分大小寫的正則匹配 以xx結尾!~
和!~*
分別為區分大小寫不匹配及不區分大小寫不匹配 的正則/
通用匹配,任何請求都會匹配到。
Nginx負載均衡
訪問server_name www.domain.com
時 通過nginx轉發到 http//myproject ,即 upstream
分發到三個不同埠的伺服器來處理請求
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http//myproject;
}
}
}
配置負載均衡後要重啟nginx的配置檔案
sbin/ngix -s reload
負載均衡, 分配伺服器策略
1). 輪詢 (預設)
所有請求都按照時間順序分配到不同的服務上,如果服務Down掉,可以自動剔除宕機的伺服器
upstream dalaoyang-server {
server localhost:8080;
server localhost:8081;
}
2). 權重
指定每個服務的權重比例,weight和訪問比率成正比,通常用於後端服務機器效能不統一,將效能好的分配權重高來發揮伺服器最大效能
upstream dalaoyang-server {
server localhost:8080 weight=1;
server localhost:8081 weight=2;
}
3) ip_hash
每個請求都根據訪問ip的hash結果分配,經過這樣的處理,每個訪客固定訪問一個後端服務,如下配置(ip_hash可以和weight配合使用)。
ip_hash機制能夠讓某一客戶機在相當長的一段時間內只訪問固定的後端的某臺真實的web伺服器,這樣會話就會得以保持,在網站頁面進行login的時候就不會在後面的web伺服器之間跳來跳去了,也不會出現登入一次的網站又提醒重新登入的情況.
upstream dalaoyang-server {
ip_hash;
server localhost:8080 weight=1;
server localhost:8081 weight=2;
}
4) 最少連線
將請求分配到連線數最少的服務上。
upstream dalaoyang-server {
least_conn;
server localhost:8080 weight=1;
server localhost:8081 weight=2;
}
5) fair
按後端伺服器的響應時間來分配請求,響應時間短的優先分配。
upstream dalaoyang-server {
server localhost:8080;
server localhost:8081;
fair;
}
搞清楚root後的/ 區別
location /img/ {
alias /var/www/image/;
}
#若按照上述配置的話,則訪問/img/目錄裡面的檔案時,ningx會自動去/var/www/image/目錄找檔案
location /img/ {
root /var/www/image;
}
#若按照這種配置的話,則訪問/img/目錄下的檔案時,nginx會去/var/www/image/img/目錄下找檔案。]
還有一個重要的區別是alias後面必須要用“/”結束,否則會找不到檔案的。。。而root則可有可無~~
Nginx動靜分離
目錄結構如下
訪問 192.168.1.130/www/a.html --> /data/www/a.html , 保留location (是linxu上的路徑)
重啟nginx
如果開啟autoindex on;
訪問192.168.1.130/image/ 能目錄層級顯示
不開啟就不能顯示層級目錄
Nginx配置高可用的叢集
每個nginx伺服器下連線多個work,通過work訪問tomcat和靜態資源
主機宕機,同樣可以訪問,類似於redis的哨兵模式
安裝
1)在兩臺虛擬機器上安裝nginx和keepalived
yum install keepalived –y
檢視keeppalived是否安裝完畢
rpm -qa keepalived
安裝目錄 /etc/keepalived
配置
1)進入keepalived 目錄,修改配置檔案
配置如下 keepalived.conf
2)將bash檔案放在/usr/local/src下
3)啟動兩臺主機的keepalived 和 nginx
/usr/local/nginx/sbin/nginx
systemctl start keepalived.service
keepalived.conf配置檔案
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.1.100 #MASTER IP
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port { #用於檢測nginx是否還存活
script "/usr/local/src/nginx_check.sh"
interval 2 #(檢測指令碼執行的間隔)
weight 2
}
vrrp_instance VI_1 {
state MASTER #如果是主伺服器MASTER,如果是備份伺服器改為BACKUP
interface ens32 #網絡卡名字
virtual_router_id 51 #主,備機的vitrual_router_id 必須相同
priority 100 #主,備機取不同的優先順序,主機值較大,備份機值較小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.50 #虛擬的ip地址
192.168.200.17 #與主機的網段不同不能聯機
192.168.200.18
}
}