nginx配置文件編寫及日誌文件相關操做

nginx配置文件編寫及日誌文件相關操做

nginx主配置文件擴展詳解

http server location擴展瞭解項html

http{}層下容許有多個Server{}層,一個Server{}層下又容許有多個Locationnginx

http{}標籤主要用來解決用戶的請求與響應。web

server{} 標籤主要用來響應具體的某一個網站。json

location{}標籤主要用於匹配網站具體URL路徑vim

部署nginx網站

1.編寫nginx虛擬主機配置文件windows

# 建立虛擬主機配置文件,根據主配置文件中include{}模塊指定的虛擬主機配置文件路徑建立
[root@web02 ~]$ vim /etc/nginx/conf.d/game.wj.com.conf
server{
	# 監聽80端口
	listen 80;
	# 指定訪問的域名
	server_name game.wj.com;
	# 配置URL
	location / {
		# 站點目錄
		root /code/h5_games;
		# 指定主頁面
		index index.html; 
		}
}

2.建立出對應的站點目錄瀏覽器

[root@web02 ~]$ mkdir /code

3.修改站點目錄權限ruby

[root@web02 ~]# chown nginx.nginx /code

4.部署代碼bash

# 下載代碼至當前目錄
wget http://test.driverzeng.com/Nginx_Code/h5_games.zip
# 移動代碼文件至/code
mv h5_games.zip  /code/

5.解壓代碼服務器

unzip h5_games.zip
[root@web02 /code]$ ll
total 18856
drwxr-xr-x 6 root root      108 May  3  2019 h5_games
-rw-r--r-- 1 root root 19304923 May  3  2019 h5_games.zip

6.從新加載nginx的配置文件

[root@web02 /code]$ systemctl reload nginx

**7.本地域名解析 **

windows打開:C:\Windows\System32\drivers\etc\hosts文件 
寫入:10.0.0.8 game.drz.com

8.打開瀏覽器:http://game.drz.com

注意事項

1.nginx主配置文件的內容是從上到下進行讀取的,企業中通常都用域名訪問,以免端口衝突

2.nginx配置文件的讀取順序是:主配置文件--->虛擬主機配置文件

在/etc/nginx/conf.d/下的虛擬主機配置文件,會按從上至下的順序進行讀取

3.nginx配置文件編寫時必須以分號(;)表示一行的結尾

Nginx虛擬主機

nginx配置虛擬主機的三種方式

1.基於IP方式

利用多塊網卡(多個IP)避免端口衝突

2.基於端口方式

沒有域名時,主站點配置文件默認80,那麼其餘虛擬主機配置文件的監聽端口號就得更改,影響用戶體驗

3.基於域名方式

多個域名不會存在端口衝突

nginx日誌管理

日誌格式詳解

# 虛擬機主配置文件中的日誌格式設置
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
定義了咱們日誌信息的格式
# main:日誌的格式名稱

Nginx日誌格式中容許包含的內置變量

$remote_addr        # 遠端的IP地址,上一層地址(頗有多是代理IP)
$remote_user        # 記錄客戶端用戶名
$time_local         # 記錄通用的本地時間
$time_iso8601       # 記錄ISO8601標準格式下的本地時間
$request            # 記錄請求的方法以及請求的http協議
$status             # 記錄請求狀態碼(用於定位錯誤信息)
$body_bytes_sent    # 請求主體字節數,不包括響應頭的大小
$bytes_sent         # 發送給客戶端的總字節數
$msec               # 日誌寫入時間。單位爲秒,精度是毫秒。
$http_referer       # 記錄從哪一個頁面連接訪問過來的
$http_user_agent    # 記錄客戶端(瀏覽器)相關信息
$http_x_forwarded_for #記錄客戶端IP地址
$request_length     # 請求的長度(包括請求行, 請求頭和請求正文)。
$request_time       # 請求花費的時間,單位爲秒,精度毫秒
$http_x_forwarded_for	#代理服務器將用戶IP和代理IP一併傳遞(一個用戶IP+代理IP)
# 注:若是Nginx位於負載均衡器,nginx反向代理以後, web服務器沒法直接獲取到客戶端真實的IP地址。
# $remote_addr獲取的是反向代理的IP地址。 反向代理服務器在轉發請求的http頭信息中,
# 增長X-Forwarded-For信息,用來記錄客戶端IP地址和客戶端請求的服務器地址
tail -f /var/log/nginx/access.log
10.0.0.1 - - [17/Jul/2021:15:41:26 +0800] "GET /favicon.ico HTTP/1.1" 404 555
"http://10.0.0.8/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36" "-"

自定義日誌格式

# 定義日誌格式
log_format  日誌格式名稱
# 調用日誌格式到哪一個路徑
access_log  日誌文件打印存放路徑  調用的日誌格式
# 不打印日誌,沒有指定關閉日誌打印時會打印至默認的日誌路徑,再把主配置文件的日誌打印關閉就不會再打印日誌
log_format off;

配置的日誌格式能夠都放在主配置文件中,可是調用日誌格式時,最好寫在相應的虛擬主機配置文件中

寫日誌的打印路徑時,若是寫相對路徑,就是在/var/log/nginx這個路徑中

日誌切割

使用logrotate切割日誌

logrotate是一個系統自帶的日誌切割服務,可是須要yum安裝的才自帶,源碼安裝須要本身配置日誌切割文件

# 查看被切割的日誌類型
[root@web02 ~]$ ll /etc/logrotate.d
total 24
-rw-r--r--. 1 root root  91 Apr 11  2018 bootlog
-rw-r--r--  1 root root 194 Nov 16  2020 httpd
-rw-r--r--  1 root root 351 May 25 21:30 nginx
-rw-r--r--. 1 root root 224 Oct 30  2018 syslog
-rw-r--r--. 1 root root 100 Oct 31  2018 wpa_supplicant
-rw-r--r--. 1 root root 103 Nov  5  2018 yum
[root@web02 ~]$ vim /etc/logrotate.d/nginx 
# 須要切割的日誌(這裏是全部以.log結尾的日誌文件)
/var/log/nginx/*.log {
	# 天天切割        
	daily        
	# 忽略丟失日誌        
	missingok        
	# 日誌保留52天        
	rotate 52        
	# 日誌文件進行壓縮        
	compress        
	# 延遲壓縮        
	delaycompress        
	# 注意空日誌,出現空日誌就不切割        
	notifempty       
	# 日誌文件的權限 屬主 屬組        
	create 640 nginx adm        
	# 共享的腳本        
	sharedscripts        
	postrotate                
		if [ -f /var/run/nginx.pid ]; then
			# 從新加載nginx配置文件:
			kill -10 nginx服務的pid號                        
			kill -USR1 `cat /var/run/nginx.pid`                
		fi        endscript}

true命令:只是一個執行命令動做,不會有任何輸出

date -s命令:修改系統時間,date -s '指定的時間'

使用fpm打包

須要在沒有安裝nginx時進行操做

1.獲取fpm工具

[root@web01 ~]$  wget http://test.driverzeng.com/other/fpm-1.3.3.x86_64.tar.gz

2.安裝Ruby語言環境

[root@web01 ~]$ yum -y install ruby rubygems ruby-devel

3.解壓fpm工具

[root@web01 ~]$ tar xf fpm-1.3.3.x86_64.tar.gz 
[root@web01 ~]$ ll
total 2576
-rw-r--r--  1 root root   15360 Jun 27  2016 arr-pm-0.0.10.gem
-rw-r--r--  1 root root   88064 Jun 27  2016 backports-3.6.8.gem
-rw-r--r--  1 root root   21504 Jun 27  2016 cabin-0.8.1.gem
-rw-r--r--  1 root root   29184 Jun 27  2016 childprocess-0.5.9.gem
-rw-r--r--  1 root root   24576 Jun 27  2016 clamp-0.6.5.gem
-rw-r--r--  1 root root  881664 Jun 27  2016 ffi-1.9.10.gem
-rw-r--r--  1 root root  114176 Jun 27  2016 fpm-1.3.3.gem
-rw-r--r--  1 root root 1288103 Jul 14  2016 fpm-1.3.3.x86_64.tar.gz
-rw-r--r--  1 root root  152064 Jun 27  2016 json-1.8.2.gem

4.查看gem源

[root@web01 ~]$ gem source list
*** CURRENT SOURCES ***

# 國外網站,國外的源
https://rubygems.org/

5.追加阿里雲的gem源

[root@web01 ~]$ gem sources -a http://mirrors.aliyun.com/rubygems/

6.刪除國外源

[root@web01 ~]$ gem sources --remove https://rubygems.org/

7.安裝fpm工具

[root@web01 ~]$ gem install *.gem
PS:一次不行就再安裝一次
# 刪除fpm全部的gem包
[root@web01 ~]$ rm -rf ./*

8.存儲nginx的依賴包

# 指定下載存放至/tmp下
[root@web01 ~]$ yum install -y openssl-devel pcre-devel zlib-devel --downloadonly --downloaddir=/tmp

9.將下載到/tmp目錄下的依賴包一併壓縮打包

[root@web01 /tmp]$ cd /tmp/
[root@web01 /tmp]$ tar zcf nginx_rpm.tar.gz *.rpm

10.源碼安裝nginx

11.編寫一個打包的腳本文件

vim rpm_nginx.sh
#!/bin/bash 
groupadd www -g 666 
useradd www -u 666 -g 666 -s /sbin/nologin -M
echo ' 
[Unit] 
Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ 
After=network-online.target remote-fs.target nss-lookup.target 
Wants=network-online.target

[Service] 
Type=forking 
ExecStart=/app/nginx/sbin/nginx 
ExecReload=/app/nginx/sbin/nginx -s reload
ExecStop=/app/nginx/sbin/nginx -s stop
[Install] 
WantedBy=multi-user.target' > /usr/lib/systemd/system/nginx.service

ln -s /app/nginx-1.20.1 /app/nginx

12.執行打包命令進行打包

[root@web01 ~]$ fpm -s dir -t rpm -n nginx -v 1.20.1 -d 'pcre-devel,openssl-devel,zlib-devel' --post-install /root/rpm_nginx.sh -f /app/nginx-1.20.1

-s:指定打包的是目錄仍是文件
-t:打成什麼類型的包,這裏是rpm包
-n:指定打包後的名稱
-v:打包的版本
-d:指定依賴包有哪些
--post-install:在安裝以前須要執行的腳本

可能須要的操做:

安裝rpmbuild命令

yum install -y rpmbuild-devel

打包完成後安裝nginx時,直接yum安裝打好的nginx的rpm包就能夠

相關文章
相關標籤/搜索