nginx的安裝和核心模組與配置實踐
1.安裝
安裝環境準備:
(1)linux 核心2.6及以上版本:
只有2.6之後才支援epool ,在此之前使用select或pool多路複用的IO模型,無法解決高併發壓力的問題。通過命令uname -a 即可檢視。
#檢視 linux 核心
uname -a
(2)GCC編譯器
GCC(GNU Compiler Collection)可用來編譯C語言程式。Nginx不會直接提供二進位制可執行程式,只能下載原始碼進行編譯。
(3)PCRE庫
PCRE(Perl Compatible Regular Expressions,Perl相容正則表示式)是由Philip Hazel開發的函式庫,目前為很多軟體所使用,該庫支援正則表示式。
(4)zlib庫
zlib庫用於對HTTP包的內容做gzip格式的壓縮,如果我們在nginx.conf裡配置了gzip on,並指定對於某些型別(content-type)的HTTP響應使用gzip來進行壓縮以減少網路傳輸量。
(5)OpenSSL開發庫
如果我們的伺服器不只是要支援HTTP,還需要在更安全的SSL協議上傳輸HTTP,那麼就需要擁有OpenSSL了。另外,如果我們想使用MD5、SHA1等雜湊函式,那麼也需要安裝它。
上面幾個庫都是Nginx 基礎功能所必需的,為簡單起見我們可以通過yum 命令統一安裝。
#yum 安裝nginx 環境(因為本人已經安裝過了,接不執行下面指令了)
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
原始碼獲取:
nginx 下載頁:http://nginx.org/en/download.html 。
# 下載nginx 最新穩定版本
wget http://nginx.org/download/nginx-1.14.0.tar.gz
#解壓
tar -zxvf nginx-1.14.0.tar.gz
最簡單的安裝:(預設安裝的路徑事/usr/local/nginx)
# 全部採用預設安裝
./configure
然後生成一個objs的目錄,裡面存放的都是一些模組原始碼
先前通過./configure 打出來的只是原始碼
我們還需要通過make 來構建的可執行檔案,但現在還沒有安裝到/usr/local/nginx
如果報以下的錯誤就是缺少nginx的安裝環境:
make: *** No rule to make target `build', needed by `default'. Stop. |
還需要通過make install把它安裝進/usr/local/nginx
安裝2:前面是直接安裝的沒有指定目錄也沒有新增模組,以下的安裝是基於引數構建
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-debug
然後make命令打出來新的原始碼(原來安裝過的,只要把objs下的nginx替換掉安裝目錄下/usr/local/nginx/sbin/,不過如果這樣子做根據需要的是否對nginx備份,如果沒有安裝的就使用make install)
安裝就到這結束了,很簡單的,只要注意nginx的安裝環境完備就可以了,錯也不怕,直接刪了重灌就好了,Linux中沒有widow中所謂的註冊列表之類的,不對刪了重灌便可。
控制命令:
#預設方式啟動:
./sbin/nginx
訪問nginx curl 127.0.0.1(本地主機的訪問)
或者可以直接通過瀏覽器訪問(直接訪問主機的地址)
#指定配置檔案啟動
./sbing/nginx -c /tmp/nginx.conf
#指定nginx程式目錄啟動
./sbin/nginx -p /usr/local/nginx/
#快速停止
./sbin/nginx -s stop
#優雅停止
./sbin/nginx -s quit
# 熱裝載配置檔案
./sbin/nginx -s reload
# 重新開啟日誌檔案
./sbin/nginx -s reopen
Nginx 配置與使用
基本配置介紹說明:
(1)監聽埠
語法:listen address:
預設:listen 80;
配置塊:server
(2)主機名稱
語法:server_name name[……];
預設:server_name "";
配置塊:server
server_name後可以跟多個主機名稱,如server_name www.testweb.com、download.testweb.com;。 支援萬用字元與正則
(3)location
語法:location[=|~|~*|^~|@]/uri/{……}
配置塊:server
- / 基於uri目錄匹配
- =表示把URI作為字串,以便與引數中的uri做完全匹配。
- ~表示正則匹配URI時是字母大小寫敏感的。
- ~*表示正則匹配URI時忽略字母大小寫問題。
- ^~表示正則匹配URI時只需要其前半部分與uri引數匹配即可。
1.配置第一個靜態WEB服務
- 建立站點目錄 mkdir -p /usr/www/cym
- 編寫靜態檔案
配置 nginx.conf(vim conf/niginx.conf 在nginx的安裝目錄中)
配置server
配置location
index index.html是配置一個預設的頁面
配置完之後可以檢測檔案是否有錯
然後啟動nginx
如果nginx本來就啟動的使用熱部署就可以了
然後通過瀏覽器就可以訪問了(簡單說一下本人是使用了域名的轉換的,如www.nginx_test.com,如果沒有應該使用虛擬機器的ip地址訪問)
如果是報403的
403是沒有許可權訪問,如果是這樣子,就修改conf/nginx.conf的配置檔案,不要使用預設使用者
2.配置案例
- 動靜分離實現
server {
listen 80;
server_name www.nginx_test.com *.nginx_test.com ;
root /usr/www/cym;
location / {
index index.html;
}
location /static {
alias /usr/www/static;
}
}
基於正則動靜分離
location ~* \.(gif|jpg|png|css|js)$ {
root /usr/www/static;
}
建立靜態站點
配置 location /static(基於目錄動靜分離)
訪問
基於正則動靜分離:
訪問
- 防盜鏈
# 加入至指定location 即可實現
valid_referers none blocked *.nginx_test.com;
if ($invalid_referer) {
return 403;
}
- 下載限速
下載限速:
location /download {
limit_rate 1m;
limit_rate_after 30m;
}
limit_rate :是限速的值。
limit_rate_after:是大於10m的檔案才被限速
- IP 黑名單
建立IP黑名單
# 建立黑名單檔案
echo 'deny 255.255.255.255;' >> ip.black
#http 配置塊中引入 黑名單檔案
#http 配置塊中引入 黑名單檔案
include ip.black;
訪問
3.日誌配置
#基於域名列印日誌
access_log logs/$host.access.log main;
訪問後日志的輸出
error日誌的設定
語法:error_log /path/file level;
預設:error_log logs/error.log error;
level是日誌的輸出級別,取值範圍是debug、info、notice、warn、error、crit、alert、emerg,
針對指定的客戶端輸出debug級別的日誌
語法:debug_connection[IP|CIDR]
events {
debug_connection 192.168.0.147;
debug_connection 10.224.57.0/200;
}