Ninx 基礎入門補充1

騷年不再騷發表於2020-09-24

一 Nginx 部署-yum

一 官網連線:
http://www.nginx.org

二 Nginx版本型別:
Mainline version: 主線版,即開發版
Stable version: 最新穩定版,生產環境上建議使用的版本
Legacy versions: 遺留的老版本的穩定版

三 配置YUM源:
版本很多,這裡以1.12版本為例
1.官方圖示:
在這裡插入圖片描述
2 操作示範:
在這裡插入圖片描述
四 安裝:
1.環境問題:
getenforce
systemctl status firewalld
2.操作命令
yum -y install nginx
systemctl start nginx
systemctl enable nginx
3.檢視安裝附帶的功能模組
nginx -V
4.測試:
在這裡插入圖片描述

二 Nginx 配置檔案

所有檔案:
rpm -ql nginx

示例如下:
/etc/logrotate.d/nginx
日誌輪轉
/etc/nginx/nginx.conf
總配置檔案
/etc/nginx/conf.d
子配置資料夾
/etc/nginx/conf.d/default.conf
預設的網站配置檔案
/etc/nginx/fastcgi_params
動態網站模組檔案-python,php所需的相關變數
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/koi-utf
字符集,檔案編碼
/etc/nginx/win-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
檔案關聯程式
網站檔案型別 和 相關處理程式
/etc/nginx/modules
模組資料夾。第三方模組
/etc/sysconfig/nginx
# Configuration file for the nginx service.
NGINX=/usr/sbin/nginx
CONFFILE=/etc/nginx/nginx.conf
/etc/sysconfig/nginx-debug
# Configuration file for the nginx-debug service.
NGINX=/usr/sbin/nginx-debug
CONFFILE=/etc/nginx/nginx.conf
LOCKFILE=/var/lock/subsys/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
nginx除錯程式啟動指令碼
/usr/lib/systemd/system/nginx.service systemctl
服務指令碼。
/usr/sbin/nginx
主程式
/usr/sbin/nginx-debug
nginx除錯程式
/usr/share/doc/nginx-1.12.1
文件
/usr/share/doc/nginx-1.12.1/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
man 手冊
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
預設主頁
/var/cache/nginx
快取各種
ls /var/cache/nginx/
client_temp fastcgi_temp proxy_temp scgi_temp uwsgi_temp
/var/log/nginx
日誌資料夾
ls /var/log/nginx/
access.log error.log
/usr/lib64/nginx
Nginx模組目錄

三 編譯引數

操作命令:
nginx -V

示例如下:
nginx version: nginx/1.14.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments:
配置引數./configure --help查詢幫助
–prefix=/etc/nginx
安裝路徑
–sbin-path=/usr/sbin/nginx
程式檔案
–modules-path=/usr/lib64/nginx/modules
模組路徑
–conf-path=/etc/nginx/nginx.conf
主配置檔案
–error-log-path=/var/log/nginx/error.log
錯誤日誌
–http-log-path=/var/log/nginx/access.log
訪問日誌
–pid-path=/var/run/nginx.pid
程式ID
–lock-path=/var/run/nginx.lock
鎖路徑,防止重複啟動nginx
–http-client-body-temp-path=/var/cache/nginx/client_temp
快取
–http-proxy-temp-path=/var/cache/nginx/proxy_temp
代理快取
–http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
php快取
–http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
python快取
–http-scgi-temp-path=/var/cache/nginx/scgi_temp
–with-compat
啟用動態模組相容性
–user=nginx
使用者
–group=nginx

–with-file-aio
使用nginx的aio特性會大大提高效能,比如圖片站的特點是大量的讀io操作,nginx aio不用等待每次io的結果,有助於併發處理大量io和提高nginx處理效率。
aio的優點就是能夠同時提交多個io請求給核心,然後直接由核心的io排程演算法去處理這些請求(directio),這樣的話,核心就有可能執行一些合併,節約了讀取檔案的處理時間。
就是非同步非阻塞
–with-threads
多執行緒模組
–with-http_addition_module
響應之前或者之後追加文字內容,比如想在站點底部追加一個js廣告或者新增的css樣式
示例
nginx配置addition

配置nginx.conf
server {
listen 80;
server_name www.ttlsa.com;

root /data/site/www.ttlsa.com;    

location / {
    add_before_body /2013/10/header.html;
    add_after_body  /2013/10/footer.html;
}

}

測試
以下三個檔案,對應請求的主體檔案和add_before_body、add_after_body對應的內容# cat /data/site/test.ttlsa.com/2013/10/20131001_add.html

I am title ngx_http_addition_module # cat /data/site/test.ttlsa.com/2013/10/header.html I am header!# cat /data/site/test.ttlsa.com/2013/10/footer.html footer - ttlsa

訪問結果如下,可以看到20131001_add.html的頂部和底部分別嵌入了子請求header.html和footer的內容。# curl test.ttlsa.com/2013/10/20131001_add.html
I am header!

I am title ngx_http_addition_module footer - ttlsa

–with-http_auth_request_module
認證模組
–with-http_dav_module
增加上傳PUT,DELETE,MKCOL:建立集合,COPY和MOVE方法)預設情況下為關閉
–with-http_flv_module
NGINX 新增MP4、FLV視訊支援模組
–with-http_gunzip_module
壓縮模組
–with-http_gzip_static_module
–with-http_mp4_module
多媒體模組
–with-http_random_index_module
nginx顯示隨機首頁模組
–with-http_realip_module
Nginx獲取真實IP模組
–with-http_secure_link_module
nginx安全下載模組
–with-http_slice_module
nginx中文文件
–with-http_ssl_module
安全模組
–with-http_stub_status_module
訪問狀態
–with-http_sub_module
nginx替換網站響應內容
–with-http_v2_module
–with-mail
郵件客戶端
–with-mail_ssl_module
–with-stream
負載均衡模組。nginx從1.9.0開始,新增加了一個stream模組,用來實現四層協議的轉發、代理或者負載均衡等。
–with-stream_realip_module
–with-stream_ssl_module
–with-stream_ssl_preread_module
–with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –
param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC’
–with-ld-opt=’-Wl,-z,relro -Wl,-z,now -pie’

四 Nginx 基本配置

一 觀察主配置檔案:
1.分類
CoreModule 核心模組 (程式數等)
EventsModule 事件驅動模組(工作模式等)
HttpCoreModule http核心模組(文件程式型別,配置檔案等)

2.模組功能
1、全域性/核心塊:配置影響nginx全域性的指令。一般有執行nginx伺服器的使用者組,nginx程式pid存放路徑,日誌存放路徑,配置檔案引入,允許生成worker process數等。
2、events塊:配置影響nginx伺服器或與使用者的網路連線。有每個程式的最大連線數,選取哪種事件驅動模型處理連線請求,是否允許同時接受多個網路連線,開啟多個網路連線序列化等。
3、http塊:可以巢狀多個server,配置代理,快取,日誌定義等絕大多數功能和第三方模組的配置。如檔案引入,mime-type定義,日誌自定義,是否使用sendfile傳輸檔案,連線超時時間,單連線請求數等。
4、server塊:配置虛擬主機的相關引數,一個http中可以有多個server。
5、location塊:配置請求的路由,以及各種頁面的處理情況。

二 vim /etc/nginx/nginx.conf
示例如下
user nginx;
執行nginx程式的獨立賬號
worker_processes 1;
啟動的worker程式數量(CPU數量一致或auto)
error_log /var/log/nginx/error.log warn;
錯誤日誌存放位置
pid /var/run/nginx.pid;
events {
事件
use epoll;
事件驅動模型epoll【預設】
事件驅動模型分類,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 10240;
//每個worker程式允許處理的最大連線數,例如10240,65535
http {
include /etc/nginx/mime.types;
文件和程式的關聯記錄
default_type application/octet-stream;
位元組流處理方式
log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[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;
優化引數
高效傳輸檔案的模式
Nginx高階篇sendfile配置
sendfile: 設定為on表示啟動高效傳輸檔案的模式。sendfile可以讓Nginx在傳輸檔案時直接在磁碟和tcp socket之間傳輸資料。如果這個引數不開啟,會先在使用者空間(Nginx程式空間)申請一個buffer,用read函式把資料從磁碟讀到cache,再從cache讀取到使用者空間的buffer,再用write函式把資料從使用者空間的buffer寫入到核心的buffer,最後到tcp socket。開啟這個引數後可以讓資料不用經過使用者buffer。
#tcp_nopush on;
優化引數
也就是說tcp_nopush = on 會設定呼叫tcp_cork方法,這個也是預設的,結果就是資料包不會馬上傳送出去,等到資料包最大時,一次性的傳輸出去,這樣有助於解決網路堵塞。
keepalive_timeout 65;
優化引數
長連線
#gzip on;
壓縮引數
include /etc/nginx/conf.d/*.conf;
包含子配置資料夾

二 觀察預設虛擬主機配置檔案;
vim /etc/nginx/conf.d/default.conf
示例如下
server {
預設網站配置檔案
listen 80;
監聽埠
server_name localhost;
FQDN
#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 404 /404.html;
錯誤頁面# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
錯誤頁面
location = /50x.html {
錯誤頁面
root /usr/share/nginx/html;
錯誤頁面主目錄
}# proxy the PHP scripts to Apache listening on 127.0.0.1:80
代理設定
#location ~ .php$ {# proxy_pass http://127.0.0.1;
#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
動態網站設定
#location ~ .php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;
#}# deny access to .htaccess files, if Apache’s document root
訪問控制部分# concurs with nginx’s one
#location ~ /.ht {# deny all;
#}
}

三 啟動一個新的虛擬主機
1 vim /etc/nginx/conf.d/xuleilinux.conf

server {
listen 80;
server_name xuleilinux.com;
location / {
root /xuleilinux;
index index.html ;
}
}

mkdir /xuleilinux
echo 美男子 > /xuleilinux/index.html

名詞解釋:
server 虛擬主機
listen 監聽埠
server_name 伺服器名稱
location 網站目錄設定
root 網站主目錄在本地的路徑
index 主頁檔名
http{} 是整個伺服器,所有虛擬主機的設定。
server{}是某一個虛擬主機的設定
location{} 是某一個頁面的設定。

2.重啟服務

3.域名解析和訪問

相關文章