1.Nginx簡介和安裝部署
1.1.什么是Nginx
- 高性能的[HTTP]和反向代理的web服務(wù)器,用c語言編寫,高性能支持單機(jī)千萬級連接,強(qiáng)大的第三方庫支持,負(fù)載均衡、靜態(tài)文件服務(wù)器等。
1.2.Nginx的用途
- 搭建前端靜態(tài)資源服務(wù)器、文件服務(wù)器
- 負(fù)載均衡Upstream配置實(shí)戰(zhàn)、后端節(jié)點(diǎn)高可用性探測、全局異常兜底數(shù)據(jù)配置
- Nginx封禁惡意IP、配置跨域、location和rewrite實(shí)戰(zhàn)
- Websocket配置、后端業(yè)務(wù)數(shù)據(jù)緩存前置、靜態(tài)資源壓縮
- 阿里云ESC部署配置HTTPS證書
- Nginx整合Openresty開發(fā)內(nèi)網(wǎng)訪問限制、文件資源下載限速實(shí)現(xiàn)原理
- LVS+KeepAlived高可用配置
1.3.正向代理服務(wù)器
- 客戶端和目標(biāo)服務(wù)器之間的服務(wù)器,客戶端想代理發(fā)送一個請求指定目標(biāo)服務(wù)器,然后代理向目標(biāo)服務(wù)器請求并獲得內(nèi)容,并返回給客戶端,平時說的代理服務(wù)器一般是正向代理服務(wù)器。
- 核心:用戶知道自己要訪問的目標(biāo)服務(wù)器
- 場景:跳板機(jī),訪問原來無妨訪問的網(wǎng)站
1.4.反向代理服務(wù)器
- 客戶端和目標(biāo)服務(wù)器之間的服務(wù)器,客戶端向代理發(fā)送一個請求,然后代理向目標(biāo)服務(wù)器請求并獲得內(nèi)容,并返回給客戶端。反向代理隱藏了真是的服務(wù)器。
- 核心:客戶端不知道要訪問的目標(biāo)服務(wù)器是哪臺服務(wù)器,代理會根據(jù)一定的策略選擇一個真是的服務(wù)器進(jìn)行請求。
- 場景:域名映射
1.5.nginx安裝部署
- 安裝依賴
- yum -y install gcc zlib zlib-devel pcre-devel opensslopenssl-devel
- 解壓nginx.tar.gz壓縮包
- tar -xvf nginx-1.18.0.tar.gz
- 執(zhí)行命令
- ./configure --prefix=/usr/local/nginx && make && make install
- 阿里云開放網(wǎng)絡(luò)安全組或者虛擬機(jī)開發(fā)80端口firewall-cmd --permanent --add-port=80/tcp
- 啟動nginx:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
1.6.線上訪問服務(wù)器應(yīng)用流程解析
- 一個http請求基本流程
- 客戶端通過發(fā)起域名資源請求->DNS解析獲取IP->尋找服務(wù)器獲取資源
- 域名和IP的關(guān)系,DNS作用
- DNS:Domain Name Server域名服務(wù)器,域名雖然便于人們記憶,但網(wǎng)絡(luò)中的計算機(jī)只能通過IP相互通信,他們之間的轉(zhuǎn)換共做成為域名解析,域名解析需要由專門的與專門解析服務(wù)器完成,DNS就是進(jìn)行域名解析的服務(wù)器。
- 什么是a記錄和cname
- a記錄
- 用戶可以在此設(shè)置域名并指向到自己的目標(biāo)主機(jī)地址上,從而實(shí)現(xiàn)通過域名找到服務(wù)器(lixiang.com->192.168.10.103)
- cname
- 別名指向,可以為一個主機(jī)設(shè)置別名。比如設(shè)置lixiang123.com,用來指向lixiang.com那么以后就可以用lixiang123.com代替lixiang.com來訪問,相當(dāng)于多了一條通道。
- a記錄
1.7.本地虛擬機(jī)配置宿主機(jī)域名映射
- C:\Windows\System32\drivers\etc
- 修改hosts文件
2.Nginx核心基礎(chǔ)知識
2.1.Nginx目錄結(jié)構(gòu)
(1)源碼安裝指定安裝路徑
- /usr/local/nginx
(2)目錄核心介紹
conf #所有配置文件的目錄
nginx.conf #默認(rèn)的主要配置文件
nginx.conf.default #默認(rèn)模板
html #這是編譯安裝時Nginx的默認(rèn)站點(diǎn)目錄
50x.html #錯誤頁面
index.html #默認(rèn)首頁
logs #nginx默認(rèn)的日志路徑,包括錯誤日志以及訪問日志
error.log #錯誤日志
nginx.pid #nginx啟動后的進(jìn)程id
access.log #nginx訪問日志
sbin #nginx命令目錄
nginx #啟動命令
(3)常見命令
./nginx #默認(rèn)配置文件啟動
./nginx -s reload #重啟,加載默認(rèn)的配置文件,conf/nginx.conf
./nginx -s stop #停止nginx
./nginx -c /usr/local/nginx/conf/nginx.conf #指定配置文件啟動
#nginx進(jìn)程有master process和worker process,關(guān)閉master進(jìn)程即可,其他都被關(guān)掉
2.2.Nginx核心配置文件
- 全局配置
- server主機(jī)配置
- location(URL匹配特定位置的設(shè)置)
#每個配置項(xiàng)有配置指令和指令參數(shù)夠成 nginx配置文件全部用的相對路徑
#user nobody; #指定nginx用戶組
worker_processes 1; #指定worker process進(jìn)程的數(shù)量
#error_log logs/error.log; #錯誤日志存放的路徑
#error_log logs/error.log notice; #告警日志
#error_log logs/rttor/log info; #平常日志
#pid logs/nginx.pid #nginx進(jìn)程的啟動PID
#事件模塊指令,用來指定Nginx的IO模型,Nginx支持的所有select、poll、kqueue、epoll等
#不同的是epoll用在linux平臺上,而kqueue用在BSD系統(tǒng)上
events{
use epoll;
#指定每個worker進(jìn)程的最大連接數(shù),作為服務(wù)器來說,最大連接數(shù)為worker_connections * worker_processes
#作為反向代理來說,最大連接數(shù)為worker_connections * worker_processes / 2
worker_connections 1024;
}
#HTTP模塊
http{
#資源的媒體類型
include mime.types;
#默認(rèn)為下載,瀏覽器訪問到未定義的擴(kuò)展名的時候,就默認(rèn)為下載該文件
default_type application/octet-stream;
#自定義服務(wù)日志
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';
#access_log日志,main 日志定義的格式
#access_log logs/access/log main;
#是否開啟高效傳輸模式 on開啟,off關(guān)閉
sendfile on;
#減少網(wǎng)絡(luò)報文段的數(shù)量
#tcp_nopush on;
#客戶端連接保持活動的超時時間,超過這個時間服務(wù)器會自動關(guān)閉
keepalive_timeout 65;
#是否開啟壓縮
#gzip on;
#虛擬主機(jī)配置
server {
#虛擬主機(jī)的服務(wù)端口
listen 80;
#用來指定IP地址和域名,可以有多個用空格分開
server_name localhost;
#charset koi8-r;
#access_log日志,main 日志定義的格式
#access_log logs/host.access.log main;
#URL地址配置
location /{
#服務(wù)默認(rèn)啟動目錄
root html;
#默認(rèn)訪問文件,按照順序找
index index.html;
}
#URL地址配置
location ~ \.php${
#反向代理的地址
proxy_pass http://127.0.0.1;
}
}
server {
....
}
}
2.3.Nginx搭建前端靜態(tài)服務(wù)器
(1)什么是虛擬主機(jī)
- 指在一臺物理主機(jī)上劃分出多個磁盤空間,每個磁盤空間都是有一個虛擬主機(jī),每臺虛擬主機(jī)都可以對外提供Web服務(wù),并且互不干擾,類似虛擬機(jī)
- 利用虛擬主機(jī)把多個不同域名的網(wǎng)站部署在同一臺服務(wù)器上,節(jié)省了服務(wù)器硬件成本和相關(guān)的維護(hù)費(fèi)用
(2)Nginx虛擬主機(jī)配置文章來源:http://www.zghlxwxcb.cn/news/detail-429301.html
#use nobody;
worker_processes 1;
events{
use epoll;
worker_connections 1024;
}
http{
server{
listen 80; #監(jiān)聽的端口
server_name www.nginx.com #請求的域名
location /{
root /usr/local/software/nginx/html #目錄
index index.html #跳轉(zhuǎn)的頁面
}
}
server{
listen 80;
server_name www.lixiang.com #請求的域名
location /{
root /usr/local/software/nginx/html #目錄
index lixiang.html
}
}
}
重啟nginx : ./nginx -s reload文章來源地址http://www.zghlxwxcb.cn/news/detail-429301.html
到了這里,關(guān)于超全Nginx反向代理服務(wù)器原理+實(shí)戰(zhàn)篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!