nginx是一個開源的,支持高性能,高併發的www服務和代理服務軟件。它是一個俄羅斯人lgor sysoev開發的,做者將源代碼開源出來供全球使用。
nginx比它大哥apache性能改進許多,nginx佔用的系統資源更少,支持更高的併發鏈接,有更高的訪問效率。
nginx不可是一個優秀的web服務軟件,還能夠做爲反向代理,負載均衡,以及緩存服務使用。
安裝更爲簡單,方便,靈活。
nginx能夠說是很是nb了
支持高併發,能支持幾萬併發鏈接
資源消耗少,在3萬併發鏈接下開啓10個nginx線程消耗的內存不到200M
能夠作http反向代理和負載均衡
支持異步網絡i/o事件模型epoll
#配置表 號域名源以後 yum -y install nginx
#以前經過yum安裝過了,可是咱們須要本身定製的,因此,要把以前的yum安裝的卸載了 yum remove nginx
安裝nginx須要的依賴庫 yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel
ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 一. gcc 安裝 安裝 nginx 須要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,若是沒有 gcc 環境,則須要安裝: yum install gcc-c++ 二. PCRE pcre-devel 安裝 PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,
因此須要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也須要此庫。命令: yum install -y pcre pcre-devel 三. zlib 安裝 zlib 庫提供了不少種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,因此須要在 Centos 上安裝 zlib 庫。 yum install -y zlib zlib-devel 四. OpenSSL 安裝 OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、經常使用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。 nginx 不只支持 http 協議,還支持 https(即在ssl協議上傳輸http),因此須要在 Centos 安裝 OpenSSL 庫。 yum install -y openssl openssl-devel
1.下載源碼包 wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.解壓縮源碼 tar -zxvf nginx-1.12.0.tar.gz
3.指定安裝文件夾以及編譯安裝,開啓nginx狀態監測功能(進入解壓包操做) ./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module
make && make install
4.啓動nginx,進入sbin目錄,找到nginx啓動命令(cd /opt/nginx1-12)就是要進入上一步指定的安裝文件夾 cd sbin ./nginx #啓動 ./nginx -s stop #關閉 ./nginx -s reload # 平滑重啓 ,修改了nginx.conf以後,能夠不重啓服務,加載新的配置
或者 /opt/nginx1-12/sbin/nginx -s reload # 絕對路徑平滑重啓
5.nginx目錄結構
6.nginx配置詳解
#定義nginx工做進程數 worker_processes 5; #錯誤日誌 #error_log logs/error.log; #http定義代碼主區域 http { include mime.types; default_type application/octet-stream; #定義nginx的訪問日誌功能 #nginx會有一個accses.log功能,查看用戶訪問的記錄 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 logs/access.log main; sendfile on; keepalive_timeout 65; #開啓gzip壓縮傳輸 gzip on; #虛擬主機1 定義一個 鬥魚網站 server { #定義nginx的訪問入口端口,訪問地址是 192.168.11.37:80 listen 80; #定義網站的域名www.woshidouyu.tv #若是沒有域名,就填寫服務器的ip地址 192.168.11.37 server_name www.woshidouyu.tv; #nginx的url域名匹配 #只要請求來自於www.woshidouyu.tv/111111111 #只要請求來自於www.woshidouyu.tv/qweqwewqe #最低級的匹配,只要來自於www.woshidouyu.tv這個域名,都會走到這個location location / { #這個root參數,也是關鍵字,定義網頁的根目錄 #以nginx安裝的目錄爲相對路徑 /opt/nginx112/html #能夠自由修改這個root定義的網頁根目錄 root html; #index參數定義網站的首頁文件名,默認的文件名 index index.html index.htm; } #錯誤頁面的優化(只要是遇到前面4系列的錯誤,就會直接跳轉到相對目錄下的40x.html頁面) error_page 400 401 402 403 404 /40x.html; } }
7.配置一個網頁html
server { listen 80; server_name www.qishi2douyu.com; #access_log logs/host.access.log main; location / { root /opt/qishi2douyu/; index index.html index.htm; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
vim /etc/profile.d/nginx.sh
加入這句話:
export PATH=/opt/nginx-112/sbin:$PATH
·而後執行:python
. /etc/profile.d/nginx.sh
nginx -s reload
·linux
nginx操做通常有:nginx
-s stopc++
-s reloadweb
-s start正則表達式
都有-s選項算法
在192.168.226.128(個人虛擬機ip)服務器上,跑3個網站出來
www.qishi2douyu.com
www.qishi2huya.com
www.qishi2jd.com
server { listen 80; server_name www.qishi2douyu.com; #access_log logs/host.access.log main; location / { root /opt/qishi2douyu/; index index.html index.htm; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name www.qishi2huya.com; location / { root /opt/qishi2huya/; index index.html index.htm; } } server { listen 80; server_name www.qishi2jd.com; location / { root /opt/qishi2jd/; index index.html index.htm; } }
分別在/opt目錄下建立qishi2douyu、qishi2huya、qishi2jd這三個目錄
分別在目錄下建立index.html
/opt/nginx112/sbin/nginx -s reload #參數s是執行的意思,會從新加載配置文件
#1.修改物理機的hosts文件
www.qishi2douyu.com
www.qishi2huya.com
www.qishi2jd.com
vim /opt/nginx112/conf/nginx.conf 在www.qishi2douyu.com虛擬主機下添加如下內容(server代碼塊下) error_page 400 401 402 403 404 /40x.html; location = /40x.html { root /opt/qishi2douyu/; }
vim 40x.html
/opt/nginx112/sbin/nginx -s reload
http://www.qishi2douyu.com/sladfj243
vim /opt/nginx-112/conf/nginx.conf
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 logs/access.log main;
/opt/nginx112/sbin/nginx -s reload
tail -f /opt/nginx112/logs/access.log
vim /opt/nginx-112/conf/nginx.conf
deny 192.168.226.1;
1. 正向代理(用的比較少)
客戶端掛了代理
2. 反向代理(保護資源服務器不受攻擊)
服務端掛了代理
192.168.12.128 # 內部的django服務器 192.168.12.130 # 代理服務器
#就是說:
請求數據: windows ——> 192.168.12.130 ——> 192.168.12.128
返回數據: windows <—— 192.168.12.130 <—— 192.168.12.128sql
vim /opt/nginx112/conf/nginx.conf