Nginx快速入門視頻課程——筆記
Nginx,主講:湯小洋
一、Nginx簡介
1. Nginx是什麽?
? Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器
? Nginx可以作為一個Web服務器進行網站的發布,也可以作為反向代理服務器進行負載均衡的實現
? 常見的Web服務器:Tomcat、Apache、Nginx、Weblogic等
2. 特點
? 占用內存少、並發能力強
二、搭建Nginx環境
1.安裝nginx
? 兩種方式:
- 源代碼安裝:需要編譯 ./configure ——> make ——> make install
- 在線安裝,參考:http://nginx.org/en/linux_packages.html
? 在線安裝:
-
下載nginx認證文件,並添加到apt-key中
sudo apt-key add nginx_signing.key
-
配置apt源,添加nginx軟件源
sudo vi /etc/apt/sources.list deb http://nginx.org/packages/ubuntu/ trusty nginx deb-src http://nginx.org/packages/ubuntu/ trusty nginx
-
更新apt軟件源,並安裝nginx
sudo apt-get update sudo apt-get install nginx
-
訪問測試
http://ip地址
註:Nginx默認使用的是80端口
2. 目錄結構
?執行
whereis nginx
查看?命令程序:
- /usr/sbin/nginx
? 配置文件:
- /etc/nginx/nginx.conf
? 日誌目錄:
- /var/log/nginx/
? 默認虛擬主機目錄:
- /usr/share/nginx/html
3. 相關命令
netstat -ntpl | grep 80 #查看進程信息 ps aux | grep ntinx sudo nginx #啟動 sudo nginx -s stop #停止 sudo nginx -s reload #重啟 sudo nginx -c /etc/nginx/nginx.conf #使用指定的配置文件啟動 sudo nginx -t # 測試配置文件是否有錯誤 sudo nginx -v #查看版本信息
4. 關於配置文件
? 主配置文件nginx.conf,包含三部分內容:全局配置、工作模式配置、HTTP配置
#運行nginx的用戶
user nginx;
#工作進程的數量,可以根據CPU的核心總數來設置
worker_processes 4;
#錯誤日誌文件的位置及輸出級別
error_log /var/log/nginx/error.log warn;
#PID文件的位置
pid /var/run/nginx.pid;
#工作模式配置
events {
#每個進程最大處理的連接數
worker_connections 10000;
}
#HTTP配置
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函數來輸出文件
sendfile on;
#tcp_nopush on;
#連接超時時間
keepalive_timeout 65;
#開啟gzip壓縮
#gzip on;
#引入外部配置文件,包含虛擬主機的配置
include /etc/nginx/conf.d/*.conf;
}
? 虛擬主機配置文件/etc/nginx/conf.d/default.conf,可以定義多個虛擬主機配置文件
#虛擬主機的配置
server {
#監聽端口
listen 80;
#服務器域名
server_name localhost;
#網頁的默認編碼
#charset koi8-r;
#訪問該虛擬主機的日誌位置
#access_log /var/log/nginx/host.access.log main;
#根據目錄配置
location / {
#網站根目錄的配置
root /usr/share/nginx/html;
#默認首頁
index index.html index.htm;
}
#錯誤的反饋頁面
error_page 500 502 503 504 /50x.html;
#錯誤頁面的配置
location = /50x.html {
root /usr/share/nginx/html;
}
}
? 將原配置文件備份,養成數據備份的習慣
三、HTTP服務器
1. 簡介
? 虛擬主機:把一臺物理服務器劃分為多個虛擬的服務器,稱為虛擬主機
? 每個虛擬主機對應一個Web站點,其實就是在一臺服務器上搭建多個網站
2. 虛擬主機
? 步驟:
-
準備網站目錄及測試頁面
mkdir www cd www mkdir ums mkdir sms echo welcome to ums > ums/index.html echo welcome to sms > sms/index.html
-
創建虛擬主機配置文件並配置
cd /etc/nginx/conf.d/ sudo cp default.conf ums.conf sudo cp default.conf sms.conf sudo vi ums.conf server { listen 80; server_name www.ums.com; location / { root /home/soft01/www/ums; index index.html index.htm; } } sudo vi sms.conf server { listen 80; server_name www.sms.com; location / { root /home/soft01/www/sms; index index.html index.htm; } }
實現虛擬主機的三種方式:
- 基於不同的IP
- 基於不同的端口
- 基於不同的域名
-
配置域名解析
在客戶端主機中配置域名解析
windows:C:\Windows\System32\drivers\etc\hosts
Linux/Mac:/etc/hosts
192.168.1.59 www.ums.com 192.168.1.59 www.sms.com
域名解析的過程:查找hosts文件——>DNS
註:該方式僅是本地測試時使用的,實際應用中要購買註冊域名
3. 作為圖片服務器
? 使用Nginx作為圖片服務器:
- 上傳:使用ftp或sftp上傳圖片到服務器指定的ftp目錄下
- 下載:通過訪問Nginx服務器來訪問ftp目錄下的圖片文件,即使用HTTP請求來訪問資源文件,而不是通過FTP請求
? 步驟:
-
創建存放圖片的文件夾,並上傳圖片到該目錄中
mkdir /home/soft01/www/images
-
配置Nginx
sudo vi /etc/nginx/conf.d/default.conf location /images { root /home/soft01/www; autoindex on; #打開目錄瀏覽功能 }
訪問url:http://ip/images 實際物理路徑:/home/soft01/www/images
-
訪問
http://ip/images/xxx.img
/home/soft01
四、反向代理
1. 簡介
-
正常請求
客戶端發送請求到服務器,服務器接收請求並響應數據
-
正向代理
概念:位於客戶端和原始服務器之間的服務器,為了從原始服務器獲取數據,客戶端向代理服務器發送請求並指定請求目標(原始服務器),然後代理服務器將請求轉換給原始服務器,並將響應的數據返回給客戶端
正向代理是客戶端使用的,對客戶端進行代理,客戶端知道並主動使用代理
?
作用:
- 訪問原來無法訪問的資源(google、fackbook等),×××
- 可以做緩存,加速資源的訪問
- 對客戶端上網進行認證授權
- 上網行為管理,記錄用戶訪問記錄,對外隱藏用戶信息
-
反向代理
概念:客戶端發送請求到服務器(客戶端認為是原始服務器,實際上是一臺反向服務器),反向代理服務器接收請求並將請求轉發給內部網絡中的多臺集群服務器,並將響應的數據返回給客戶端
反向代理一般用於服務器集群、分布式等,實現負載均衡
作用:
- 負載均衡,提高處理和響應速度
- 保證內網的安全,隱藏服務器信息,防止Web×××
2. 配置
? 使用Nginx作為其他服務器
? 步驟:
-
創建虛擬主機配置文件,並配置反向代理
scd /etc/nginx/conf.d sudo cp default.conf proxy.conf sudo vi proxy.conf #後臺服務器列表 upstream tomcat_server{ server 192.168.1.66:8080; } server { listen 80; server_name www.tomcat.com; location / { proxy_pass http://tomcat_server; #指定代理的後臺服務器 } }
-
配置域名解析
-
訪問
http://tomcat.com
五、負載均衡
1. 簡介
? 概念:將接收到的請求按照一定的規則分發到不同的服務器進行處理,從而提高系統響應和處理速度,稱為負載均衡
2. 配置
? 步驟:
-
準備網站(模擬淘寶,後面有多臺服務器)
#拷貝兩個tomcat cp -r apache-tomcat-8.5.30 taobao1 cp -r apache-tomcat-8.5.30 taobao2 #修改tomcat端口 vi taobao1/conf/server.xml vi taobao2/conf/server.xml #修改頁面 vi taobao1/webapps/ROOT/index.jsp vi taobao2/webapps/ROOT/index.jsp #啟動tomcat ./startup.sh
-
創建虛擬主機配置文件,並配置負載均衡
sudo cp proxy.conf taobao.conf sudo vi taobao.conf #後臺服務器列表 upstream taobao_server{ server 192.168.1.66:8081 weight=3; #weight表示權重,權重越高被分配到的幾率越大 server 192.168.1.66:8082 weight=7; } server { listen 80; server_name www.taobao.com; location / { proxy_pass http://taobao_server; #指定代理的後臺服務器 } }
?
六、動靜分離
1. 簡介
? 問題:tomcat在處理靜態資源時效率不高,默認情況下所有資源都由tomcat處理,會導致Web應用響應慢,占用系統資源
? 解決:將靜態資源交由Nginx處理,動態資源仍由tomcat處理,實現動靜分離
? 實際上就是把Nginx作為靜態資源服務器
2. 配置
? 步驟:
-
編輯taobao.conf,配置動態分離
sudo vi /etc/nginx/conf.d/taobao.conf #處理靜態資源 location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff) { root /home/soft01/www/static; }
-
創建存放靜態資源的文件夾,並將資源資源放到該目錄中
cd /home/soft01/www mkdir static cd static chmod 777 * cd /home/soft01/software/taobao1/webapp/ROOT cp tomcat.css tomcat.png /home/soft01/www/static
? 高並發的處理:
- 負載均衡:集群
- 動靜分離:使用Nginx、CDN
- 緩存:以空間換時間,提高系統效率
- 限流:流量控制
- 降級:服務降載
Nginx快速入門視頻課程——筆記