LNMP部署(地址重寫)
可以有多個
會匹配地址欄裏的擴展地址進行匹配
支持正則: ~ .php$ 代表正則匹配 模糊匹配 以.php結尾的地址
格式
rewrite 舊地址 新地址 選項
rewrite regex replacement flag
選項flag可以是如下參數
last
停止執行其他重寫規則,根據url繼續搜索其他location,地址欄不改變
break 停止執行其他重寫規則,完成本次請求 redirect 302臨時重定向地,址欄改變,爬蟲不更新url permanent 301永久重定向,地址欄改變,爬蟲更新url rewrite a b last;防止來回跳轉 rewrite b a;
正則表達式
區分大小寫匹配 ~
不區分大小寫匹配 ~
區分大小寫不匹配 !~
不區分大小寫不匹配 !~
判斷文件是否存在 -f
判斷目錄是否存在 -d
判斷文件是否可執行 -x
判斷文件目錄連接是否存在 -e
域名跳轉 #server裏location外
server_name www.360buy.com;
rewrite ^/(.*) http://www.jd.com/$1;
location / {
也面跳轉 #location裏
location / {
if ( $http_user_agent ~ firefox ) {
rewrite ^(.)$ /test$1 break;
LNMP 動態網站
L linux
N Nginx
M mysql mariadb
P 網站開發語言 PHP Perl Python...
安裝的軟件列表如下:
nginx
mariadb、mariadb-server、mariadb-devel
php、php-fpm、php-mysql
#yum -y install mariadb mariadb-server
#yum -y install mariadb-devel
#yum -y install php php-mysql
#rpm -ivh php-fpm-5.4.16-36.el7_1.x86_64.rpm 服務端口9000
起服務
#nginx #端口80
#systemctl start mariadb #端口3306
開機啟動目錄 /usr/lib/systemd/system/
nginx 相關配置
源文件裏有模版 需要修改
#vim /usr/local/nginx/conf/nginx.conf
......
location ~ .php$ {
root html; #頁面目錄
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf; #包含的子配置文件
}
......
location 作用:
可以有多個
會匹配地址欄裏的擴展地址進行匹配
支持正則: ~ .php$ 代表正則匹配 模糊匹配 以.php結尾的地址
模版
wordpress PHP
織夢 PHP
帝國 PHP
php-fpm配置文件
#vim /etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = apache
group = apache
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
創建PHP測試頁面1:
#vim /usr/local/nginx/html/test1.php
<?php
$i="This is a test Page";
echo $i;
?>
創建PHP測試頁面2,連接MariaDB數據庫:
#vim /usr/local/nginx/html/test2.php
<?php
$links=mysql_connect("localhost","root","密碼");
//註意:root為mysql賬戶名稱,密碼需要修改為實際mysql密碼,無密碼則留空即可
if($links){
echo "link db ok!!!";
}
else{
echo "link db no!!!";
}
?>
創建PHP測試頁面3,連接並查詢MariaDB數據庫:
#vim /usr/local/nginx/html/test3.php
<?php
$mysqli = new mysqli(‘localhost‘,‘root‘,‘‘,‘mysql‘);
if (mysqli_connect_errno()){
die(‘Unable to connect!‘). mysqli_connect_error();
}
$sql = "select * from user";
$result = $mysqli->query($sql);
while($row = $result->fetch_array()){
printf("Host:%s",$row[0]);
printf("</br>");
printf("Name:%s",$row[1]);
printf("</br>");
}
?>
測試
#firefox http://192.168.4.5/test1.php
#firefox http://192.168.4.5/test2.php
#firefox http://192.168.4.5/test3.php
地址重寫:
格式
rewrite 舊地址 新地址 選項
rewrite regex replacement flag
選項flag可以是如下參數
last
停止執行其他重寫規則,根據url繼續搜索其他location,地址欄不改變
break
停止執行其他重寫規則,完成本次請求
redirect
302臨時重定向地,址欄改變,爬蟲不更新url
permanent
301永久重定向,地址欄改變,爬蟲更新url
rewrite a b last;
rewrite b a;
頁面的跳轉
註意位置 在location裏面
#vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
rewrite /a.html /b.html redirect;
}
}
#redirect 客戶端顯示跳轉
是支持正則的 a.html的.(點)也算任意單個字符
a.html文件不需要存在
域名的跳轉
訪問www.360buy.com跳轉到www.jd.com
註意位置 server裏面location外面
#vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name www.360buy.com;
rewrite ^/(.*) http://www.jd.com/$1;
location / {
root html;
index index.html index.htm;
}
}
訪問www.nidama.com跳轉到www.nidaye.com
#vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.nidama.com;
rewrite ^/(.*) http://www.nidaye.com/$1;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.nidaye.com;
location / {
root html;
index index.html index.htm;
}
}
註 rewrite ^/(.) http://www.jd.com/$1;
(.)代表保留擴展域名後面的$1就代表前面的擴展域名
實現只跳轉 域名 不影響子網頁
charset utf-8; #萬國解碼 支持中文顯示
正則表達式
區分大小寫匹配 ~
不區分大小寫匹配 ~
區分大小寫不匹配 !~
不區分大小寫不匹配 !~
判斷文件是否存在 -f
判斷目錄是否存在 -d
判斷文件是否可執行 -x
判斷文件目錄連接是否存在 -e
server {
listen 80;
server_name www.test.com;
location / {
root html;
index index.html;
}
if ($http_user_agent ~* curl){
rewrite ^(.*)$ /test$1;
}
}
根 是當匹配不到後默認匹配的路徑 根的優先級最低
location / {
root html;
index index.htm;
##################################################################
實驗總結:
對IP先做域名跳轉 後做頁面跳轉 之後再皮匹配閱覽器訪問不同樣式的頁面。
IP-->www.test.com-->將訪問a.html(不存在)跳轉至b.html-->firefox 閱覽器第一版版 ,其他閱覽器第一版
#ls
index.html test01 test02
test01]# ls #二版頁面
b.html inde.html
test02]# ls #一版頁面
b.html inde.html
#vim /usr/local/nginx/conf/nginx.conf
...
server {
listen 80;
server_name localhost;
rewrite ^/(.*) http://www.test.com/$1 break;
location / {
root html;
index index.html index.htm;
}
...
server {
listen 80;
server_name www.test.com;
location / {
root html;
index inde.html;
if ( $request_uri = "/" ) { #擴展頁面啥也不輸入會跳轉一個頁面
rewrite / /index.html break;
}
rewrite /a.html /b.htmlredirect; #將擴展名a改b訪問
if ( $http_user_agent ~* firefox ) { #客戶端為火狐跳到一版頁面
rewrite ^/(.*) /test01/$1 break;
}
if ( $http_user_agent ~* curl ) { #客戶端為curl跳到二版頁面
rewrite ^/(.*) /test02/$1 break;
}
}
}
nginx內置變量:
//該段為自定義log輸出樣式函數。配合下面的access_log使用
//日誌格式設置:
//$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址;
//$remote_user:用來記錄客戶端用戶名稱;
//$time_local: 用來記錄訪問時間與時區;
//$request: 用來記錄請求的url與http協議;
//$status: 用來記錄請求狀態;成功是200,
//$body_bytes_sent :記錄發送給客戶端文件主體內容大小;
//$http_referer:用來記錄從那個頁面鏈接訪問過來的;
//$http_user_agent:記錄客戶瀏覽器的相關信息
###################################################################
LNMP部署(地址重寫)