一、安裝 OpenResty
OpenResty® 是一個基於 Nginx 與 Lua 的高效能 Web 平臺,其內部整合了大量精良的 Lua 庫、第三方模組以及大多數的依賴項。用於方便地搭建能夠處理超高併發、擴充套件性極高的動態 Web 應用、Web 服務和動態閘道器。
官網:https://openresty.org/cn/
[root@localhost ~]# wget https://openresty.org/package/centos/openresty.repo
[root@localhost ~]# sudo mv openresty.repo /etc/yum.repos.d/
[root@localhost ~]# sudo yum check-update
[root@localhost ~]# sudo yum install -y openresty
管理 OpenResty
[root@localhost ~]# systemctl start openresty.service
[root@localhost ~]# systemctl enable openresty.service
配置檔案路徑
[root@localhost nginx]# pwd
/usr/local/openresty/nginx
也可以像 nginx 一樣管理
[root@localhost sbin]# /usr/local/openresty/nginx/sbin/nginx -s reload
[root@localhost sbin]# /usr/local/openresty/nginx/sbin/nginx -s stop
[root@localhost sbin]# /usr/local/openresty/nginx/sbin/nginx -t
二、匹配方式
2.1 通用匹配
...
server {
listen 80;
server_name localhost;
default_type text/html; # 以html標籤格式直接返回資訊。
# 通用匹配優先順序最低。
location / {
echo "hello nginx";
}
}
測試結果
2.2 完全匹配
完全匹配是優先順序別最高的匹配,如果滿足則直接匹配。
location = /a {
echo "=/a";
}
測試結果
2.3 進行字首匹配
# 第二高優先順序匹配
location ^~ /a {
echo "^~ /a";
}
測試結果
2.4 正規表示式匹配
# 匹配優先順序第三
location ~ ^/\w {
echo "~ ^/\w";
}
測試結果
[root@localhost ~]# curl http://localhost/a
=/a
[root@localhost ~]# curl http://localhost/b
~ ^/\w
2.5 按照匹配程度
同優先順序的,按照匹配程度較高的先匹配
location ^~ /a {
echo "^~ /a";
}
location ^~ /a/b {
echo "^~ /a/b";
}
測試結果
[root@localhost ~]# curl http://localhost/a/b
^~ /a/b
[root@localhost ~]# curl http://localhost/a/c
^~ /a
[root@localhost ~]# curl http://localhost/a/b/c
^~ /a/b
匹配程度一樣的,則寫在前面的先匹配
location ~ ^/\w {
echo "~ ^/\w";
}
location ~ ^/[a-z] {
echo "~ ^/[a-z]";
}
[root@localhost ~]# curl http://localhost/g
~ ^/\w
調換位置之後
location ~ ^/[a-z] {
echo "~ ^/[a-z]";
}
location ~ ^/\w {
echo "~ ^/\w";
}
測試結果
[root@localhost ~]# curl http://localhost/g
~ ^/[a-z]
三、反向代理
3.1 常用代理
代理追加虛擬路徑,如果是代理到根目錄,需要加上“/”,否則找不到頁面。
location /a/ {
proxy_pass http://192.168.115.21:8081/;
}
測試結果
多個代理
location /a/ {
proxy_pass http://192.168.115.21:8081/;
}
location /b/ {
proxy_pass http://192.168.115.21:8080/;
}
測試結果
3.2 根據不同的域名代理
server
{
listen 80;
server_name test.xxxxx.net;
location / {
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;
proxy_pass http://192.168.3.222;
}
}
server
{
listen 80;
server_name wiki.xxxxx.net;
location / {
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;
proxy_pass http://127.0.0.1:8181;
}
}
測試結果
四、負載均衡
4.1 隨機負載
upstream group1 {
server 192.168.115.21:8080;
server 192.168.115.21:8081;
}
location /a/ {
proxy_pass http://group1/;
}
4.2 配置權重
upstream group1 {
server 192.168.115.21:8080 weight=1;
server 192.168.115.21:8081 weight=1;
}
location /a/ {
proxy_pass http://group1/;
}