http server location擴展瞭解項html
http{}層下容許有多個Server{}層,一個Server{}層下又容許有多個Locationnginx
http{}標籤主要用來解決用戶的請求與響應。web
server{} 標籤主要用來響應具體的某一個網站。json
location{}標籤主要用於匹配網站具體URL路徑vim
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配置文件編寫時必須以分號(;)表示一行的結尾
1.基於IP方式
利用多塊網卡(多個IP)避免端口衝突
2.基於端口方式
沒有域名時,主站點配置文件默認80,那麼其餘虛擬主機配置文件的監聽端口號就得更改,影響用戶體驗
3.基於域名方式
多個域名不會存在端口衝突
# 虛擬機主配置文件中的日誌格式設置 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 定義了咱們日誌信息的格式 # main:日誌的格式名稱
$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 '指定的時間'
須要在沒有安裝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包就能夠