1 介紹
nginx幾種常用的用法:
靜态資源存放使用;反向代理單台機器;代理多台機器;
nginx架構基礎配置:
# 主master程序加載配置,啟動了幾個worker程序
worker_processes 4;
events {
# 每個工作線程能進行最大的連接配接數
worker_connections 1024;
}
http {
server {
listen 8888;
}
server {
listen 8889;
}
server {
listen 8890;
}
server {
listen 8891;
location /images/ {
root /usr/local/nginx/images/;
}
}
}
對于nginx啟動:首先master程序啟動,加載配置監聽相應的4個端口;worker_processes讀取到對應的值4,然後fork 4個worker工作程序,每個監聽的端口都是一個fd,在fork程序的時候fd傳到工作程序。後面主程序就不進行想要了,而是由工作程序想要。
具體流程圖如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGLwIzXlpXazxyMDxkNTd0b1cXaMVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1IWO4ETYxkDNmhjNwQmY4MDZyQzNmFzYzMmZjRmYmBzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2 靜态資源配置使用
對于一些網站,php代碼,圖檔,視訊等放入指定的位置可以進行通路。具體配置:
worker_processes 4;
events {
worker_connections 1024;
}
http {
server {
listen 8888;
}
server {
listen 8889;
}
server {
listen 8890;
}
server {
listen 8891;
location / {
root /usr/local/nginx/html/;
}
location /images/ {
root /usr/local/nginx/images/;
}
}
}
浏覽器通路:
http://120.79.220.143:8891/images/a.png
結果:
location指令兩種使用方式:
a:/location/xxxx/bbbb
b:/location?username=xxxx
對應api的兩種通路方式:
a: GET /location/xxxx/bbbb version
b: GET /location?a=xxxx&b=yyyy version
預設api GET /version
3 反向代理單台機器
原理圖:
配置:
server {
listen 8891;
location /{
# ip對應要轉發的位址
proxy_pass http://120.24.251.73;
}
}
結果:
4 反向代理多台機器
代理結構圖:
配置:
主master:
upstream backend {
server 120.78.203.167;
server 120.24.251.73;
}
server {
listen 8891;
location /{
proxy_pass http://backend;
}
}
業務伺服器可以還是原來的配置
結果:http://120.79.220.143:8891/ 通路順序通路對應的代理的業務伺服器
5 常見的負載均衡算法
代理的兩台預設的采用1 輪流政策(upstream預設政策)
當然還有其他的政策: 2 權重重
server 192.168.2.192 weight = 2;
server 192.168.2.193 weight = 99;
3 ip hash 根據ip分(但是公網ip會變動
4 fair算法(nginx三方子產品提供)
5 url_hash算法(三方子產品提供)