什么是nginx?

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行,其特點是占有記憶體少,并發能力強,事實上nginx的并發能力在同型別的網頁服務器中表現較好
nginx安裝
1、手動安裝
#安裝 nginx
$ yum install nginx
?
#啟動nginx
$ systemctl start nginx
?
#加入開機啟動
$ systmctl enable nginx
?
#查看nginx的狀態
$ systemctl status nginx
?
#檢查 nginx 檔案語法是否此錯誤
$ nginx -t
?
# 多載 nginx 配置
$ nginx -s reload
?
2、docker安裝
# 拉取鏡像
$ docker pull nginx
?
# 運行docker
$ docker run -p 80:80 --name docker-nginx -d nginx
?
# 將容器中的檔案復制到一個檔案夾中
$ docker cp docker-nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
?
# 洗掉上一個運行的 nginx 容器
$ docker rm -f docker -nginx
?
# 重新啟動一個容器 將資料卷映射到剛才創建的目錄
$ 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重定向
注:需要先將服務器的
ip決議到域名上
將域名重定向到當前的地址和埠
server {
# 監聽的埠
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 {
# 監聽的埠 并開啟ssl
listen 443 ssl;
# 域名
server_name www.xxx.xxx;
# 證書 不同網站申請的證書不同 均可以 只是后綴區分
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搭建檔案服務器
location /images/ {
root /root/;
autoindex on;
}
root 配置的意思是,會在root配置的目錄后跟上URL,組成對應的檔案路徑,
意思就是我們在瀏覽器輸入的這個地址實際訪問的是
root/images
會把我們的location后面的/images拼到實際訪問的路徑之后
root/images/images
1、處理方法是把root后面的images去掉
2、root替換成alias
location /images/ {
alias /root/images/;
autoindex on;
}
nginx頁面快取
proxy_cache_path
格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]
說明:
path -快取檔案存放的位置
levels-快取目錄結構,可以是1、2、3位數字作為目錄,最多是3位數字如:1,1:2
keys_zone -指定快取池名字及大小,每個定義快取路徑必須不同
inactive -設定每個快取區快取檔案的有效時長,超過該時長沒被訪問的快取被洗掉
max_size -設定不活動的快取大小,不活動的快取超過該大小后被洗掉
$upstream_cache_status包含以下幾種狀態:
·MISS 未命中,請求被傳送到后端
·HIT 快取命中
·EXPIRED 快取已經過期請求被傳送到后端
·UPDATING 正在更新快取,將使用舊的應答
·STALE 后端將得到過期的應答
配置
# 開啟gzip
gzip on;
# 啟用gzip壓縮的最小檔案,小于設定值的檔案將不會壓縮
gzip_min_length 1k;
# gzip 壓縮級別,1-10,數字越大壓縮的越好,也越占用CPU時間,一般設定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;
# 快取的服務地址
add_header X-Via $server_addr;
# 快取的狀態 用于區分訪問的資源是快取的還是加載的
add_header X-Cache $upstream_cache_status;
location / {
proxy_set_header X-Real-IP $remote_addr;
# 快取名稱
proxy_cache tmpcache;
# 需要快取的資料狀態 需要快取保留的時間
proxy_cache_valid any 1h;
# 代理地址
proxy_pass http://127.0.0.1:8080;
}
nginx訪問控制
deny指令
allow 語法: allow address | CIDR | unix: | all; 默認值: — 配置段: http, server, location, limit_except 允許某個ip或者一個ip段訪問.如果指定unix:,那將允許socket的訪問. 注意:unix在1.5.1中新加入的功能,如果你的版本比這個低,請不要使用這個方法, deny 語法: deny address | CIDR | unix: | all; 默認值: — 配置段: http, server, location, limit_except
Unix是20世紀70年代初出現的一個作業系統,除了作為網路作業系統之外,還可以作為單機作業系統使用,
CIDR一般指無類別域間路由,無類別域間路由(Classless Inter-Domain Routing、CIDR)是一個用于給用戶分配IP地址以及在互聯網上有效地路由IP資料包的對IP地址進行歸類的方法,
nginx.conf
# 添加nginx掃描的檔案 include blockips.conf;
blockips.conf
# 禁用訪問 deny 192.168.1.101; # 允許訪問 allow 192.168.1.102;
nginx負載均衡
1、默認分配
upstream ipaddr {
server 192.168.1.101:8080;
server 192.168.1.102:8081;
}
location / {
root html;
index index.html index.htm;
# 需要實作負載均衡的地址
proxy_pass http://ip;
}
2、按照一定比例輪詢
upstream ipaddr {
# weight 的值越大 所請求到的幾率越大
server 192.168.1.101:8080 weight=1;
server 192.168.1.102:8081 weight=2;
}
3、回應分配
upstream ipaddr {
# 公平地按照后端服務器的回應時間(rt)來分配請求,回應時間短即rt小的后端服務器優先分配請求
server 192.168.1.101;
server 192.168.1.102;
fair;
}
4、固定ip分配
upstream ipaddr {
# 請求按照訪問ip(即Nginx的前置服務器或者客戶端IP)的hash結果分配,這樣每個訪客會固定訪問一個后端服務器,可以解決session一致問題,
ip_hash;
server 192.168.1.101;
server 192.168.1.102;
}
5、請求結果分配
upstream ipaddr {
# 與ip_hash類似,但是按照訪問url的hash結果來分配請求,使得每個url定向到同一個后端服務器,主要應用于后端服務器為快取時的場景下,
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
hash $request_uri;
hash_method crc32;
}
以上就是常用得一些nginx功能分享,如果錯誤請指正,十分感謝!
學習這件事,不是缺乏時間,而是缺乏努力,
如果對編程感興趣,請關注我的個人博客 https://www.lzmvlog.top/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251367.html
標籤:Java
下一篇:檔案下載上傳小工具
