Nginx 快速入門
一、nginx簡介
1、什么是Nginx
Nginx 是?款?性能的 http 服務器/反向代理服務器及電?郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師伊?爾·?索夫(Igor Sysoev)所開發,官?測試 nginx 能夠??撐 5 萬并發鏈接,并且cpu、內存等資源消耗卻?常低,運??常穩定。
Nginx應?場景:
1、http 服務器。 Nginx 是?個 http 服務可以獨?提供 http 服務。可以做??靜態服務器。
2、虛擬主機。 可以實現在?臺服務器虛擬出多個?站。例如個??站使?的虛擬主機。
3、反向代理,負載均衡。 當?站的訪問量達到?定程度后,單臺服務器不能滿??戶的請求時,需要?多臺服務器集群可以使? nginx 做反向代理。并且多臺服務器可以平均分擔負載,不會因為某臺服務器負載?宕機?某臺服務器閑置的情況。
二、Nginx安裝
1、搜索nginx鏡像
docker search nginx
2、拉取nginx鏡像
docker pull nginx
3、創建容器,設置端?映射、?錄映射
# 在/root?錄下創建nginx?錄?于存儲nginx數據信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下創建nginx.conf?件,粘貼下?內容
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024; }
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
~/nginx/conf.d/80.conf
server {
listen 80; # 監聽的端?
server_name localhost; # 域名或ip
location / { # 訪問路徑配置
root /usr/share/nginx/html;# 根?錄
index index.html index.htm; # 默認??
}
error_page 500 502 503 504 /50x.html; # 錯誤??
location = /50x.html {
root html;
}
}
#docker容器創建掛載
docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
1、-p 80:80:將容器的 80端?映射到宿主機的 80 端?。
2、-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:將主機當前?錄下的/conf/nginx.conf 掛載到容器的 /etc/nginx/nginx.conf配置?錄
3、-v $PWD/logs:/var/log/nginx:將主機當前?錄下的 logs ?錄掛載到容器的/var/log/nginx?志?錄
三、Nginx靜態?站部署
1、靜態?站的部署
將/資料/靜態??/index?錄下的所有內容 上傳到服務器的/usr/local/nginx/html下即可訪問
2、 配置虛擬主機
nginx虛擬主機,也叫“?站空間”,就是把?臺運?在互聯?上的物理服務器劃分成多個“虛擬”服務器。虛擬主
機技術極?的促進了?絡技術的應?和普及。同時虛擬主機的租?服務也成了?絡時代的?種新型經濟形式。
2.1、端?綁定
1)上傳靜態?站:
- 將/資料/靜態??/index?錄上傳?
/usr/local/nginx/index下 - 將/資料/靜態??/regist?錄上傳?
/usr/local/nginx/regist下
2)修改Nginx 的配置?件:~/nginx/config.d/port.conf
server {
listen 81; # 監聽的端?
server_name localhost; # 域名或ip
location / { # 訪問路徑配置
root /usr/share/nginx/index;# 根?錄
index index.html index.htm; # 默認??
}
error_page 500 502 503 504 /50x.html; # 錯誤??
location = /50x.html {
root html;
}
}
server {
listen 82; # 監聽的端?
server_name localhost; # 域名或ip
location / { # 訪問路徑配置
root /usr/share/nginx/regist;# 根?錄
index regist.html; # 默認??
}
error_page 500 502 503 504 /50x.html; # 錯誤??
location = /50x.html {
root html;
}
}
3)訪問測試:
地址欄輸?http://你的虛擬機IP/:81 可以看到??? 地址欄輸?http://你的虛擬機IP/:82 可以看到注冊??
三、Nginx反向代理與負載均衡
1、反向代理
1.1、什么是反向代理
反向代理(Reverse Proxy)?式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部?絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為?個反向代理服務器。
?先我們先理解正向代理,如下圖:

正向代理是針對你的客戶端,?反向代理是針對服務器的,如下圖:

1.2、配置反向代理準備?作
在docker中部署tomcat
1、搜索tomcat鏡像
docker search tomcat
2、拉取tomcat鏡像
docker pull tomcat
3、創建容器,設置端?映射、?錄映射
# 在/root?錄下創建tomcat?錄?于存儲tomcat數據信息 mkdir ~/tomcat cd ~/tomcat docker run -id --name=c_tomcat \ -p 8080:8080 \ -v $PWD:/usr/local/tomcat/webapps \ tomcat
參數說明:
-p 8080:8080: 將容器的8080端?映射到主機的8080端?
-v $PWD:/usr/local/tomcat/webapps: 將主機中當前?錄掛載到容器的webapps
4、 使?外部機器訪問tomcat
1.3 配置反向代理
~/nginx/config.d/proxy.conf
upstream tomcat-me{
server 192.168.220.12:8080;
}
server {
listen 80; # 監聽的端?
server_name www.me.com; # 域名或ip
location / { # 訪問路徑配置
# root index;# 根?錄
proxy_pass http://tomcat-me;
index index.html index.htm; # 默認??
}
}
重新啟動Nginx 然后?瀏覽器測試:http://www.me.com (此域名須配置域名指向)
2、負載均衡
2.1 什么是負載均衡
負載均衡建?在現有?絡結構之上,它提供了?種廉價有效透明的?法擴展?絡設備和服務器的帶寬、增加吞吐量、加強?絡數據處理能?、提??絡的靈活性和可?性。
負載均衡,英?名稱為Load Balance,其意思就是分攤到多個操作單元上進?執?,例如Web服務器、FTP服務器、企業關鍵應?服務器和其它關鍵任務服務器等,從?共同完成?作任務。
2.2 配置負載均衡準備?作
(1)使?docker創建3個tomcat容器,端?分別為8080 ,8081,8082 。
docker run -id --name=c_tomcat1 \ -p 8081:8080 \ -v $PWD:/usr/local/tomcat/webapps \ tomcat docker run -id --name=c_tomcat2 \ -p 8082:8080 \ -v $PWD:/usr/local/tomcat/webapps \ tomcat docker run -id --name=c_tomcat3 \ -p 8083:8080 \ -v $PWD:/usr/local/tomcat/webapps \ tomcat
(2)分別啟動這三個tomcat服務。
(3)為了能夠區分是訪問哪個服務器的?站,可以在??標題加上標記以便區分。
2.3 配置負載均衡
修改 Nginx配置?件:lb.conf
upstream tomcat-huike {
server 192.168.220.12:8080;
server 192.168.220.12:8081;
server 192.168.220.12:8082;
}
server {
listen 80; # 監聽的端?
server_name www.huike.com; # 域名或ip
location / { # 訪問路徑配置
# root index;# 根?錄
proxy_pass http://tomcat-huike;
index index.html index.htm; # 默認??
}
error_page 500 502 503 504 /50x.html; # 錯誤??
location = /50x.html {
root html;
}
}
部署并訪問項目,刷新觀察每個??的標題,看是否不同。
經過測試,三臺服務器出現的概率各為33.3333333%,交替顯示。
如果其中?臺服務器性能?較好,想讓其承擔更多的壓?,可以設置權重。
?如想讓NO.1出現次數是其它服務器的2倍,則修改配置如下:
upstream tomcat-travel {
server 192.168.177.129:8080;
server 192.168.177.129:8081 weight=2;
server 192.168.177.129:8082;
}
以上則為nginx-docker的快速入門教學,感謝各位閱覽!