一、首先就是nginx的安裝
這裏使用編譯安裝在官網http://nginx.org找到需要的版本,因其依賴pcre庫,先安裝pcre庫
命令
#yum install pcre pcre-devel
#cd /user/local/src
#weget http://nginx.org/download/nginx-1.16.1.tar.gz
#tar zxvf nginx-1.16.1.tar.gz
#cd nginx-1.16.1
#make && make install
下載完成,這裏記錄一下相關知識
tar 的一些參數
必選且只能選一個的參數
-c: --create 新建一個壓縮文檔,即打包
-x: --extract,–get解壓文件
-t: --list,查看壓縮文檔裏的所有內容
-r:–append 向壓縮文檔裏追加文件,遞歸下載
-u:–update 更新原壓縮包中的文件
輔助選項:
-z:是否同時具有gzip的屬性?即是否需要用gzip壓縮或解壓?一般格式爲xxx.tar.gz或xx.tgz
-j:是否同時具有bzip2的屬性?即是否需要用bzip2壓縮或解壓?一般格式爲xx.tar.bz2
-v:顯示操作過程!這個參數很常用
-f:使用文檔名,注意,在f之後要立即接文檔名,不要再加其他參數!
-C:切換到指定目錄
二、目錄介紹
進入安裝的nginx下
可見
conf 配置文件
html 網頁文件
logs 日誌文件
sbin 二進制程序
啓動:進入安裝目錄後 ./sbin/nginx
啓動時常見問題:80端口占用問題
分爲兩種情況
(1)確實有軟件佔用,關掉即可;若是自帶apache且自啓動 server httpd stop;
若是自行編譯安裝:path/to/apach/bin/apachtl stop
(2)無服務佔用
三、一些命令參數
nginx目錄 -t 測試配置
nginx目錄 -s reload 加載最新配置
nginx目錄 -s stop 立即停止
nginx目錄 -s quit 優雅停止(即運行結束停止)
nginx目錄 -s reopen 重新打開日誌
使用日誌文件的切割:複製日誌文件到另一個文件中,再新建一個
eg:
mv aa.log bb.log
touch aa.log
但此時不會寫入新的aa.log中,我們可以直接重啓,更好的方法-s reopen 重連
四、nginx的一些配置
nginx配置文件nginx.conf 1、全局配置2.sever段配置虛擬主機
server {
listen 80; #監聽端口
server_name aa.com; #域名
access_log 路徑(該虛擬主機下日誌存放路徑) 內容格式(可自定義,見五、日誌管理)
#eg: access_log logs/aa.log simple;
location \ {
root: 絕對相對都可以 #根目錄
index:index.php index.html #入口文件
}
//解析php的配置
location ~ \.php$ {
root #和上面一致
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
include fastcgi_params;
}
}
五、日誌管理
如果使用了代理服務器,則 $request_addr 就無法獲取真正的用戶ip,此時代理服務器會返回參數$http_x_forwarded_for
六、url重寫
同樣在sever中配置(修改兩處)
server {
listen 80; #監聽端口
server_name aa.com; #域名
access_log 路徑(該虛擬主機下日誌存放路徑) 內容格式(可自定義,見五、日誌管理)
#eg: access_log logs/aa.log simple;
location \ {
root: 絕對相對都可以 #根目錄
index:index.php index.html #入口文件
if (!-e $request_filename) { #url重寫1
rewrite (.*)$ /index.php/$1;
}
}
//解析php的配置
location ~ \.php$ {
root #和上面一致
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $1; #url重寫2
include fastcgi_params;
}
}
七、try_files
上面url重寫過於繁瑣,官方提供了簡單的方法server {
listen 80; #監聽端口
server_name aa.com; #域名
access_log 路徑(該虛擬主機下日誌存放路徑) 內容格式(可自定義,見五、日誌管理)
#eg: access_log logs/aa.log simple;
location \ {
root: 絕對相對都可以 #根目錄
index:index.php index.html #入口文件
try_files $uri /index.php?$uri; #try_files配置
}
//解析php的配置
location ~ \.php$ {
root #和上面一致
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
include fastcgi_params;
}
}