Nginx从入门到精通
目錄
- Nginx介紹
- 一、Nginx介紹
- 二、為什么選擇Nginx
- 三、Nginx和Apache對比
- Nginx安裝部署
- 一、nginx源碼下載
- 二、nginx安裝
- 三、nginx相關目錄
- 四、nginx啟動管理
- 五、nginx啟動測試
- 默認網站
- 一、默認網站
- 二、訪問控制
- 三、登陸驗證
- 四、日志管理
- 五、防盜鏈
- 虛擬主機
- 一、虛擬主機介紹
- 二、基于IP的虛擬主機
- 基于IP的虛擬主機特點
- 三、基于端口的虛擬主機
- 基于端口的虛擬主機特點
- 四、基于域名的虛擬主機
- 基于域名的虛擬主機特點
Nginx介紹
一、Nginx介紹
Nginx(“engine x”)是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。和apache一樣,都是web服務器軟件,因為其性能優異,所以被廣大運維喜歡。又因為nginx是一個輕量級的web服務器,相比apache來說資源消耗更低。
延伸版本:tengine(淘寶)、openresrt(章亦春)等
- http://nginx.org 官網
- http://www.nginx.cn/doc/index.html 中文文檔
二、為什么選擇Nginx
Nginx 是一個高性能的 Web 和反向代理服務器, 它具有有很多非常優越的特性:
作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的并發連接,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。能夠支持高達 50,000 個并發連接數的響應,感謝 Nginx 為我們選擇了 epoll and kqueue 作為開發模型.
作為負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP,也可以支持作為 HTTP代理服務器 對外進行服務。Nginx 用 C 編寫, 不論是系統資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。
作為郵件代理服務器: Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last.fm 描述了成功并且美妙的使用經驗。
Nginx 安裝非常的簡單,配置文件 非常簡潔(還能夠支持perl語法),Bugs非常少的服務器: Nginx 啟動特別容易,并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在 不間斷服務的情況下進行軟件版本的升級。
三、Nginx和Apache對比
- 靜態文件處理能力:nginx高于apache
- 資源消耗:nginx優于apache,因為nginx是異步處理模型,只需要幾個進程就能夠處理大量在線請求,而apache 2.4仍然是進程模型或者線程模型,即仍然采用大量線程來處理大量在線請求。
- Apache支持的模塊很多,而且也比較穩定。而nginx由于出現的比較晚,所以在這方面可能比不上Apache。
- nginx本身就是一個反向代理服務器,而且支持7層負載均衡。
- nginx處理動態頁面很雞肋,一般只用與處理靜態頁面和反向代理。
Nginx安裝部署
一、nginx源碼下載
官網:http://nginx.org/
源碼包:nginx-1.19.3.tar.gz
源碼包下載:wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src
二、nginx安裝
2.1、下載nginx源碼包 [root@zutuanxue ~]# wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src [root@zutuanxue src]# cd /usr/src2.2、安裝nginx依賴包 [root@zutuanxue ~]# yum -y install gcc pcre-devel zlib-devel- gcc: 源碼編譯工具 - pcre-devel: nginx url_rewrite 功能提供包 - zlib-devel: nginx 壓縮功能提供包 2.3、解壓nginx源碼,并進入源碼包 [root@zutuanxue src]# tar xf nginx-1.19.3.tar.gz [root@zutuanxue src]# cd nginx-1.19.32.4、配置nginx源碼[root@zutuanxue nginx-1.19.3]# ./configure --prefix=/usr/local/nginx配置目的:1)檢查環境 是否 滿足安裝條件 依賴解決2)指定安裝方式 配置文件 命令文件 各種文件放哪里 開啟模塊功能【內置模塊 三方模塊】3)指定軟件安裝在那里2.5、編譯nginx源碼 [root@zutuanxue nginx-1.19.3]# make -j42.6、安裝nginx [root@zutuanxue nginx-1.19.3]# make install三、nginx相關目錄
nginx path prefix: “/usr/local/nginx”nginx binary file: “/usr/local/nginx/sbin/nginx”nginx modules path: “/usr/local/nginx/modules”nginx configuration prefix: “/usr/local/nginx/conf”nginx configuration file: “/usr/local/nginx/conf/nginx.conf”nginx pid file: “/usr/local/nginx/logs/nginx.pid”nginx error log file: “/usr/local/nginx/logs/error.log”nginx http access log file: “/usr/local/nginx/logs/access.log”四、nginx啟動管理
配置文件測試:/usr/local/nginx/sbin/nginx -t
Nginx啟動:/usr/local/nginx/sbin/nginx
Nginx關閉:killall –s QUIT nginx
五、nginx啟動測試
nginx安裝完畢,接下來就可以啟動nginx了,nginx啟動后如何測試nginx的啟動狀態呢?可以通過以下三種方式去測試,這個可以根據自己的習慣選擇一種測試就行了。
- 使用netsata命令查看啟動端口
[root@zutuanxue ~]# netstat –ntpl - 使用losf命令查看啟動端口
[root@zutuanxue ~]# lsof -i :80 - 使用文本瀏覽器訪問nginx默認網站
[root@zutuanxue ~]# elinks http://IP
測試內容:
默認網站
一、默認網站
server {listen 80;server_name localhost;location / {root html;index index.html index.htm;#支持目錄瀏覽autoindex on;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}二、訪問控制
location /a {autoindex on;allow 192.168.12.0/24;deny all;#基于客戶端IP做過濾,符合條件的允許訪問,不符合的返回404;if ( $remote_addr !~ "192.168.12" ) {#return 404;return http://book.ayitula.com;}}三、登陸驗證
location /c {auth_basic "登陸驗證";auth_basic_user_file /etc/nginx/htpasswd;}四、日志管理
Nginx訪問日志主要有兩個參數控制
log_format #用來定義記錄日志的格式(可以定義多種日志格式,取不同名字即可)
access_log #用來指定日至文件的路徑及使用的何種日志格式記錄日志
access_log logs/access.log main;
log_format格式變量:$remote_addr #記錄訪問網站的客戶端地址$remote_user #遠程客戶端用戶名$time_local #記錄訪問時間與時區$request #用戶的http請求起始行信息$status #http狀態碼,記錄請求返回的狀態碼,例如:200、301、404等$body_bytes_sent #服務器發送給客戶端的響應body字節數$http_referer #記錄此次請求是從哪個連接訪問過來的,可以根據該參數進行防盜鏈設置。$http_user_agent #記錄客戶端訪問信息,例如:瀏覽器、手機客戶端等$http_x_forwarded_for #當前端有代理服務器時,設置web節點記錄客戶端地址的配置,此參數生效的前提是代理服務器也要進行相關的x_forwarded_for設置自定義一個json格式的訪問日志
log_format main_json '{"@timestamp":"$time_local",' '"client_ip": "$remote_addr",' '"request": "$request",' '"status": "$status",' '"bytes": "$body_bytes_sent",' '"x_forwarded": "$http_x_forwarded_for",' '"referer": "$http_referer"' '}'; access_log logs/access_json.log main_json;日志截斷
mv access.log access.log.0killall -USR1 \`cat master.nginx.pid\`sleep 1gzip access.log.0五、防盜鏈
location /images/ { alias /data/images/; valid_referers none blocked *.ayitula.com;if ($invalid_referer) {rewrite ^/ http://www.ayitula.com/daolian.gif;#return 403;} }虛擬主機
一、虛擬主機介紹
虛擬主機 就是把一臺物理服務器劃分成多個“虛擬”的服務器,每一個虛擬主機都可以有獨立的域名和獨立的目錄,可以獨立發布一個網站。
實驗案例: 同時發布兩個網站:
- DocumentRoot /usr/local/nginx/html/web1
- DocumentRoot /usr/local/nginx/html/web2
二、基于IP的虛擬主機
應用場景:IP充足的環境,每個網站需要一個IP地址
server {listen 192.168.11.251:80;location / {root html/web1;index index.html index.htm index.php;} } server {listen 192.168.11.252:80; location / {root html/web2;index index.html index.htm;} }基于IP的虛擬主機特點
- 不同IP對應不同網站
- 訪問方便,用戶直接使用默認端口即可訪問
- 服務器需要有多個IP地址(一個公網IP大概一年的費用是600左右)
- 維護方便,基于獨立IP的站點,便于監控、維護。
三、基于端口的虛擬主機
應用場景:IP不足的環境
- 優點: 多個網站發布使用該配置方法只需要一個IP,節省IP地址
- 缺點 端口你是無法告訴公網用戶,無法適用于公網客戶,適合內部用戶
基于端口的虛擬主機特點
- 不同端口對應不同網站
- 訪問需要加端口
- 節省IP地址
- 適合私網運行
四、基于域名的虛擬主機
應用場景:一個網站需要有一個域名,目前公網發布網站的首選
基于域名 server {listen 80;server_name web1.zutuanxue.com;location / {root html/web1;index index.html index.htm index.php;} }server {listen 80;server_name web2.zutuanxue.com;location / {root html/web2;index index.html index.htm;} }基于域名的虛擬主機特點
- 不同域名對應不同網站
- 需要多個域名 可以是二級或三級域名
- 每個站點使用默認端口,方便用戶訪問
- 只需要一個IP地址,節約成本
- 適合公網環境
總結
以上是生活随笔為你收集整理的Nginx从入门到精通的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 40天python入门教程_Python
- 下一篇: Nginx从入门到精通(全)