Nginx 的大名從我接觸開發(fā)以來如雷貫耳,但一直不清楚具體用法,今天就來研究一下....
安裝
brew install nginx
安裝后目錄在/usr/local/etc/nginx
目錄中有一個 nginx.conf 就是配置文件
常用命令
啟動: nginx
去訪問 localhost:8080
吧
關(guān)閉: nginx -s stop
重啟: nginx -s reload
每次修改完.conf
文件就需要重啟 nginx
檢查配置: nginx -t
檢查修改的nginx.conf
配置是否正確
最基本的代理功能
server {
listen 80;
# listen [::]:80 default_server; 默認(rèn)跳轉(zhuǎn)到https
# return 302 https://$server_name$request_uri;
server_name test.com;
location / {
proxy_cache my_cache;
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
}
}
緩存
proxy_cache_path cache levels=1:2 keys_zone=my_cache:10m;
在相對路徑創(chuàng)建一個 cache 目錄 等級 1:2 可以有子目錄 目錄名字:大小
https 與 http2 公鑰 私匙
server {
listen 443 http2; # 配置http2
server_name test.com;
http2_push_preload on; # 開啟http2 push
ssl on;
ssl_certificate_key ../certs/localhost-privkey.pem; # https證書地址
ssl_certificate ../certs/localhost-cert.pem;
location / {
proxy_cache my_cache;
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
}
}
反向代理
當(dāng)我們有一個服務(wù)器集群淘邻,并且服務(wù)器集群中的每臺服務(wù)器的內(nèi)容一樣的時候,同樣我們要直接從個人電腦訪問到服務(wù)器集群服務(wù)器的時候無法訪問获黔,必須通過第三方服務(wù)器才能訪問集群
這個時候,我們通過第三方服務(wù)器訪問服務(wù)器集群的內(nèi)容在验,但是我們并不知道是哪一臺服務(wù)器提供的內(nèi)容玷氏,此種代理方式稱為反向代理
nginx 反向代理主要通過 proxy_pass 來配置,將你項目的開發(fā)機地址填寫到 proxy_pass 后面腋舌,正常的格式為 proxy_pass URL 即可
server {
listen 80;
location / {
proxy_pass http://10.10.10.10:20186;
}
}
負(fù)載均衡
公司會建立很多的服務(wù)器盏触,這些服務(wù)器組成了服務(wù)器集群,然后块饺,當(dāng)用戶訪問網(wǎng)站的時候赞辩,先訪問一個中間服務(wù)器,再讓這個中間服務(wù)器在服務(wù)器集群中選擇一個壓力較小的服務(wù)器授艰,然后將該訪問請求引入選擇的服務(wù)器
所以辨嗽,用戶每次訪問,都會保證服務(wù)器集群中的每個服務(wù)器壓力趨于平衡淮腾,分擔(dān)了服務(wù)器壓力糟需,避免了服務(wù)器崩潰的情況
一句話:nginx 會給你分配服務(wù)器壓力小的去訪問
worker_processes
工作進程數(shù),和 CPU 核數(shù)相同
worker_connections
每個進程允許的最大連接數(shù)
upstream 模塊
負(fù)載均衡就靠它
語法格式:upstream name {}
里面寫的兩個 server 分別對應(yīng)著不同的服務(wù)器
server 模塊
實現(xiàn)反向代理
listen 監(jiān)督端口號
location / {}訪問根路徑
proxy_pass http://firstdemo
谷朝,代理到firstdemo里兩個服務(wù)器上
// 修改nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream firstdemo {
ip_hash;
server 39.106.145.33;
server 47.93.6.93;
}
server {
listen 8080;
location / {
proxy_pass http://firstdemo;
}
}
}
目前游覽器默認(rèn)要求 HTTP2 必須使用 https
服務(wù)端開發(fā)可以面向 http1.1 通過 nginx 代理來配置 http2 這樣可以兼容那些不支持 http2 的游覽器
未完待續(xù)....