location 作用: 可以有多个 会匹配地址栏里的扩展地址进行匹配 支持正则: ~ .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 php-fpm #端口9000 #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:记录客户浏览器的相关信息
###################################################################