LNMP部署(地址重写)

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:记录客户浏览器的相关信息  

###################################################################

原文地址:http://blog.51cto.com/45545613/2083323

时间: 2024-10-07 09:10:49

LNMP部署(地址重写)的相关文章

LNMP部署、Nginx+FastCGI、Nginx高级技术

1 案例1:部署LNMP环境1.1 问题安装部署Nginx.MariaDB.PHP环境?安装部署Nginx.MariaDB.PHP.PHP-FPM:?启动Nginx.MariaDB.FPM服务:?并测试LNMP是否工作正常.1.2 方案在RHEL7系统中,源码安装Nginx,使用RPM包安装MariaDB.PHP.PHP-FPM软件.操作过程中需要安装的软件列表如下:?nginx [源码](web服务器,接收用户请求)?mariadb(客户端软件mysql).mariadb-server(服务)

lnmp部署cacti+nagios

关于lnmp架构整合cacti+nagios中,nginx的配置文件是最难搞的,个人感觉 nginx.conf的配置文件 ##里面用重写 server { listen 80; server_name laimai365.org www.laimai365.org; location / { # root /opt/nagios/; root html; index index.php index.html index.htm ; } error_page 500 502 503 504 /50

nginx之地址重写

nginx地址重写 1,语法格式:rewrite 旧地址 新地址 [选项]选项:rewrite 旧地址 新地址 [选项];last 不再读其他rewritebreak 不再读其他语句,结束请求redirect 临时重定向permament 永久重定向 2,实战 1)实现访问jluo.html重定向到jluocc.html(不跳转地址栏)#vim /usr/local/nginx/conf/nginx.confocation / {root html;index index.html index.

编译LNMP部署动态网站环境

title: 编译LNMP部署动态网站环境 date: 2018-11-08 13:59:59 tags: Linux 服务配置 categories: Linux 服务配置 copyright: true --- LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Nginx=1.13 --> MySQL=5.6 --> PHP=7.0 无错误版. 安装编译环境 在使用源码包安装服务

LNMP部署及应用理论及实操

LNMP部署及应用 LNMP架构解读 LNMP平台就是Linux.Ngnix. MySQL. PHP的组合架构,需要Linux服务器.MySQL 数据库.PHP解析环境 MySQL安装配置 为了与Nginx.PHP环境保持一致,此处选择采用源代码编译的方式安装MySQL组件MySQL部署的方法编译安装MySQL优化调整初始化数据库启动mysql服务并设置root数据库账号的密码 配置网页动静分离,解析PHP,有两种方法可以选择使用PHP的FPM模块将访问PHP页面的Web请求转交给Apache服

项目搭建系列之四:SpringMVC框架下使用UrlRewrite实现地址重写

简单记录一下UrlRewrite实现地址重写功能. 1.pom.xml 在pom.xml增加配置UrlRewrite jar <!-- URL Rewrite --> <dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.4</version> </dependen

地址重写--Java中urlrewriter的使用

最近公司以前的一个项目需要升级改版,其中的一个模块是使用Struts2做的不需要改动,但是需要将其从之前的项目里面剥离出来,看了看官网,发现所有的链接访问的静态地址,以为是FreeMarker实现的,仔细研究了会发现不是那么回事,原来是伪静态,程序使用了urlrewriter.其实urlrewriter的使用很简单,看看下面你就明白了. urlrewriter简介:url rewrite将我们的动态网页地址转化为静态的地址,如html.shtml,还可以隐藏网页的真正路径,比如:有时候需要将xx

apache 防盗链 与 地址重写

一.apache 防盗链  与  地址重写 http://192.168.4.254/254.html 盗链代码 192.168.4.254  web-server vim  254.html <html> <body> <a href="http://192.168.4.253/one.png" >  show image </a> </body> </html> 在192.168.4.253服务器上做防盗链配置

URL地址重写例子(Helicon)

# Helicon ISAPI_Rewrite configuration file# Version 3.1.0.86 #RewriteEngine on RewriteRule ^/esf/.+(/.+){4,}$ /404.aspx?$0RewriteRule ^/esf/attn_1$ /esf/qh1/ [NC,R=301]RewriteRule ^/esf/attn_1_sid_0$ /esf/qh1/ [NC,R=301]RewriteRule ^/zuf/attn_1$ /zuf