什么是nginx?
Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力在同類(lèi)型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好
nginx安裝
1、手動(dòng)安裝#安裝 nginx
$ yum install nginx
#啟動(dòng)nginx
$ systemctl start nginx
#加入開(kāi)機(jī)啟動(dòng)
$ systmctl enable nginx
#查看nginx的狀態(tài)
$ systemctl status nginx
#檢查 nginx 文件語(yǔ)法是否此錯(cuò)誤
$ nginx -t
# 重載 nginx 配置
$ nginx -s reload 2、docker安裝# 拉取鏡像
$ docker pull nginx
# 運(yùn)行docker
$ docker run -p 80:80 --name docker-nginx -d nginx
# 將容器中的文件復(fù)制到一個(gè)文件夾中
$ docker cp docker-nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
# 刪除上一個(gè)運(yùn)行的 nginx 容器
$ docker rm -f docker -nginx
# 重新啟動(dòng)一個(gè)容器 將數(shù)據(jù)卷映射到剛才創(chuàng)建的目錄
$ docker run -p 80:80 --name docker-nginx1 -d nginx
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /usr/local/nginx/conf.d:/etc/nginx/conf.d
-v /usr/local/nginx/log:/var/log/nginx 3、docker-compose安裝version: '3.1'
services:
nginx:
image: nginx
restart: always
container_name: nginx
environment:
- TZ=Asia/Shanghai
ports:
- 80:80
- 443:443
volumes:
- /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /usr/local/nginx/log:/var/log/nginx nginx重定向
注:需要先將服務(wù)器的ip解析到域名上
將域名重定向到當(dāng)前的地址和端口 server {
# 監(jiān)聽(tīng)的端口
listen 80;
# 域名
server_name www.xxx.xxx;
rewrite ^(.*)$ https://$host$1 permanent;
client_max_body_size 1024m;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
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:8080/;
}
}配置https server {
# 監(jiān)聽(tīng)的端口 并開(kāi)啟ssl
listen 443 ssl;
# 域名
server_name www.xxx.xxx;
# 證書(shū) 不同網(wǎng)站申請(qǐng)的證書(shū)不同 均可以 只是后綴區(qū)分
ssl_certificate cert/xxx.crt;
ssl_certificate_key cert/xxx.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080/;
#add_header Content-Security-Policy upgrade-insecure-requests;
}
}nginx搭建文件服務(wù)器
location /images/ {
root /root/;
autoindex on;
}root 配置的意思是,會(huì)在root配置的目錄后跟上URL,組成對(duì)應(yīng)的文件路徑。
意思就是我們?cè)跒g覽器輸入的這個(gè)地址實(shí)際訪問(wèn)的是 root/images
會(huì)把我們的location后面的/images拼到實(shí)際訪問(wèn)的路徑之后 root/images/images
1、處理方法是把root后面的images去掉 2、root替換成alias location /images/ {
alias /root/images/;
autoindex on;
}nginx頁(yè)面緩存
proxy_cache_path
格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size] 說(shuō)明: path -緩存文件存放的位置
levels-緩存目錄結(jié)構(gòu),可以是1、2、3位數(shù)字作為目錄,最多是3位數(shù)字如:1,1:2
keys_zone -指定緩存池名字及大小,每個(gè)定義緩存路徑必須不同
inactive -設(shè)置每個(gè)緩存區(qū)緩存文件的有效時(shí)長(zhǎng),超過(guò)該時(shí)長(zhǎng)沒(méi)被訪問(wèn)的緩存被刪除
max_size -設(shè)置不活動(dòng)的緩存大小,不活動(dòng)的緩存超過(guò)該大小后被刪除
$upstream_cache_status包含以下幾種狀態(tài):
·MISS 未命中,請(qǐng)求被傳送到后端
·HIT 緩存命中
·EXPIRED 緩存已經(jīng)過(guò)期請(qǐng)求被傳送到后端
·UPDATING 正在更新緩存,將使用舊的應(yīng)答
·STALE 后端將得到過(guò)期的應(yīng)答 配置# 開(kāi)啟gzip
gzip on;
# 啟用gzip壓縮的最小文件,小于設(shè)置值的文件將不會(huì)壓縮
gzip_min_length 1k;
# gzip 壓縮級(jí)別,1-10,數(shù)字越大壓縮的越好,也越占用CPU時(shí)間。一般設(shè)置1和2
gzip_comp_level 2;
proxy_cache_path /root/cache/ levels=1:2 keys_zone=tmpcache:100m max_size=10g;
server {
listen 80;
server_name localhost;
charset utf-8;
# 緩存的服務(wù)地址
add_header X-Via $server_addr;
# 緩存的狀態(tài) 用于區(qū)分訪問(wèn)的資源是緩存的還是加載的
add_header X-Cache $upstream_cache_status;
location / {
proxy_set_header X-Real-IP $remote_addr;
# 緩存名稱(chēng)
proxy_cache tmpcache;
# 需要緩存的數(shù)據(jù)狀態(tài) 需要緩存保留的時(shí)間
proxy_cache_valid any 1h;
# 代理地址
proxy_pass http://127.0.0.1:8080;
}nginx訪問(wèn)控制
deny指令
allow
語(yǔ)法: allow address | CIDR | unix: | all;
默認(rèn)值: —
配置段: http, server, location, limit_except
允許某個(gè)ip或者一個(gè)ip段訪問(wèn).如果指定unix:,那將允許socket的訪問(wèn).
注意:unix在1.5.1中新加入的功能,如果你的版本比這個(gè)低,請(qǐng)不要使用這個(gè)方法。
deny
語(yǔ)法: deny address | CIDR | unix: | all;
默認(rèn)值: —
配置段: http, server, location, limit_except Unix是20世紀(jì)70年代初出現(xiàn)的一個(gè)操作系統(tǒng),除了作為網(wǎng)絡(luò)操作系統(tǒng)之外,還可以作為單機(jī)操作系統(tǒng)使用。 CIDR一般指無(wú)類(lèi)別域間路由。無(wú)類(lèi)別域間路由(Classless Inter-Domain Routing、CIDR)是一個(gè)用于給用戶分配IP地址以及在互聯(lián)網(wǎng)上有效地路由IP數(shù)據(jù)包的對(duì)IP地址進(jìn)行歸類(lèi)的方法。
nginx.conf
# 添加nginx掃描的文件
include blockips.conf; blockips.conf
# 禁用訪問(wèn)
deny 192.168.1.101;
# 允許訪問(wèn)
allow 192.168.1.102; nginx負(fù)載均衡
1、默認(rèn)分配upstream ipaddr {
server 192.168.1.101:8080;
server 192.168.1.102:8081;
}
location / {
root html;
index index.html index.htm;
# 需要實(shí)現(xiàn)負(fù)載均衡的地址
proxy_pass http://ip;
}2、按照一定比例輪詢upstream ipaddr {
# weight 的值越大 所請(qǐng)求到的幾率越大
server 192.168.1.101:8080 weight=1;
server 192.168.1.102:8081 weight=2;
}3、響應(yīng)分配upstream ipaddr {
# 公平地按照后端服務(wù)器的響應(yīng)時(shí)間(rt)來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短即rt小的后端服務(wù)器優(yōu)先分配請(qǐng)求
server 192.168.1.101;
server 192.168.1.102;
fair;
}4、固定ip分配upstream ipaddr {
# 請(qǐng)求按照訪問(wèn)ip(即Nginx的前置服務(wù)器或者客戶端IP)的hash結(jié)果分配,這樣每個(gè)訪客會(huì)固定訪問(wèn)一個(gè)后端服務(wù)器,可以解決session一致問(wèn)題。
ip_hash;
server 192.168.1.101;
server 192.168.1.102;
}5、請(qǐng)求結(jié)果分配upstream ipaddr {
# 與ip_hash類(lèi)似,但是按照訪問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求,使得每個(gè)url定向到同一個(gè)后端服務(wù)器,主要應(yīng)用于后端服務(wù)器為緩存時(shí)的場(chǎng)景下。
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
hash $request_uri;
hash_method crc32;
}以上就是常用得一些nginx功能分享,如果錯(cuò)誤請(qǐng)指正,十分感謝! 學(xué)習(xí)這件事,不是缺乏時(shí)間,而是缺乏努力。
|