## 代理
### 正向代理:
正向代理 是一個位于客戶端和原始服務器 (origin server) 之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標 (原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
主要為了越過局域網內的防火墻實現訪問網站
### 反向代理:
反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間 (name-space) 中的內容發送普通請求,接著反向代理將判斷向何處 (原始服務器) 轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
為了將防火墻后面的服務器提供給 Internet 用戶訪問
也可以實現負載均衡,動靜分離,url 策略
~~~text
server {
listen 80;
server_name example.test; #監聽地址
location ~ /example1/ {
proxy_pass http://127.0.0.1:5000;
}
location ~ /example2/ {
proxy_pass http://127.0.0.1:8080;
}
}
~~~
## 負載均衡
將原先請求集中到單個服務器上的情況改為增加服務器的數量,然后將請求分發到各個服務器上,將負載分發到不同的服務器,即負載均衡。
~~~
upstream myserver {
server 192.167.4.32:5000;
server 192.168.4.32:8080;
}
server {
listen 80; #監聽端口
server_name example.test; #監聽地址
location / {
root html; #html目錄
index index.html index.htm; #設置默認頁
proxy_pass http://myserver; #請求轉向 myserver 定義的服務器列表
}
}
~~~
### Nginx 分配服務器策略
- 輪詢(默認)
按請求的時間順序依次逐一分配,如果服務器down掉,能自動剔除。
- 權重
weight 越高,被分配的客戶端越多,默認為 1
- ip
按請求 ip 的 hash 值分配,每個訪客固定訪問一個后端服務器
- fair
按后端服務器的響應時間來分配,響應時間短的優先分配到請求
~~~text
upstream myserver {
ip_hash;
server 127.0.0.1:8000 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6801;
server 127.0.0.1:6802 backup;
}
1. down 表示單前的server暫時不參與負載
2. weight 默認為1,weight 越大,負載的權重就越大。
3. max_fails :允許請求失敗的次數默認為1,當超過最大次數時,返回 proxy_next_upstream 模塊定義的錯誤
4. fail_timeout:max_fails 次失敗后,暫停的時間。
5. backup: 其它所有的非 backup 機器 down 或者忙的時候,請求 backup 機器。所以這臺機器壓力會最輕。
~~~
## 動靜分離
~~~text
upstream php {
server 192.168.10.10:80 # php 給這個服務器處理
}
upstream static {
server 192.168.10.11:80 # html 給這個服務器處理
}
server{
listen 80;
server_name a.com;
location ~ \.(gif|jpg|png|htm|html|css|js)(.*) { # 匹配所有靜態資源文件用這個代理
root /data/; # html目錄
proxy\_pass http://static;
autoindex on;; # 自動打開文件列表
}
location ~ \.php$ { # 匹配php文件用這個代理
proxy_pass http://php; # 這個地址一定是上面定義的負載均衡的名字
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
~~~
- PHP
- PHP 核心架構
- PHP 生命周期
- PHP-FPM 詳解
- PHP-FPM 配置優化
- PHP 命名空間和自動加載
- PHP 運行模式
- PHP 的 Buffer(緩沖區)
- php.ini 配置文件參數優化
- 常見面試題
- 常用函數
- 幾種排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常見問題
- MySQL 索引
- 事務
- 鎖機制
- Explain 使用分析
- MySQL 高性能優化規范
- UNION 與 UNION ALL
- MySQL報錯:sql_mode=only_full_group_by
- MySQL 默認的 sql_mode 詳解
- 正則表達式
- Redis
- Redis 知識
- 持久化
- 主從復制、哨兵、集群
- Redis 緩存擊穿、穿透、雪崩
- Redis 分布式鎖
- RedisBloom
- 網絡
- 計算機網絡模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常見幾種網絡攻擊方式
- Nginx
- 狀態碼
- 配置文件
- Nginx 代理+負載均衡
- Nginx 緩存
- Nginx 優化
- Nginx 配置 SSL 證書
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 進程管理
- CentOS與Ubuntu系統區別
- Java
- 消息隊列
- 運維
- RAID 磁盤陣列
- 邏輯分區管理 LVM
- 業務
- 標準通信接口設計
- 業務邏輯開發套路的三板斧
- 微信小程序登錄流程
- 7種Web實時消息推送方案
- 用戶簽到
- 用戶注冊-短信驗證碼
- SQLServer 刪除同一天用戶重復簽到
- 軟件研發完整流程
- 前端
- Redux
- 其他
- 百度云盤大文件下載
- 日常報錯記錄
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客戶端無法連接SVN服務器,主機積極拒絕
- Python
- 基礎
- pyecharts圖表
- 對象
- 數據庫
- PySpark
- 多線程
- 正則
- Hadoop
- 概述
- HDFS