0
点赞
收藏
分享

微信扫一扫

nginx--动态网站

天蓝Sea 2022-02-17 阅读 112
nginx运维

静态网站  在不同环境下,网站内容不会变化

动态网站  在不同环境下,网站内容有可能发生变化

用户 – 浏览器html语言  -------------------   服务器 html页面

                                                                                                         php 页面  --- php-fpm

准备动态网站页面的测试文件

cp  ~/lnmp_soft/php_scripts/test.php  /usr/local/nginx/html   //拷贝动态网站测试页面到nginx中
cd  /usr/local/nginx
sbin/nginx       //启动nginx服务

打开nginx配置文件,第65到71行去掉注释(可以用:65,71s/#//),69行不用去

  location ~ \.php$ {   //~是使用正则表达式,匹配以.php结尾
            root           html;     //网站页面位置,不用改,保持默认
            fastcgi_pass   127.0.0.1:9000;  //一旦用户访问了.php结尾的文
件,就让nginx找后台的php-fpm(端口号9000)
            fastcgi_index  index.php;    //动态网站的默认页面,无需修改
        #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;   
 //无用行,保持注释状态
            include        fastcgi.conf;  //这里是另外一个配置文件,需要改扩展名
        }

 先查看一下文件中写的内容:

 

 关闭防火墙,使用火狐浏览器访问 192.168.2.5/test.php

 

fastCGI    快速公共网关接口,可以连接如nginx等网站程序到网站的语言解释器(比如php)

测试有数据库的动态网站

cp  ~/lnmp_soft/php_scripts/mysql.php  /usr/local/nginx/html/   //拷贝另外一个测试页面到nginx

浏览器打开http://192.168.2.5/mysql.php   可以看到网站显示了数据的账户信息

 

 

mysql   //进入数据库
create user dc@localhost identified by '123';   //创建测试账户
quit  //退出

刷新http://192.168.2.5/mysql.php  可以看到新创建的用户

看到以上test.php、mysql.php两个页面说明nginx不但能识别静态网站,也能解析动态

网站了,这种情况也可以记作nginx实现了动静分离

 

然后准备测试页面
echo "nginx-a~~" > html/a.html
echo "nginx-b~~" > html/b.html
[root@proxy nginx]# sbin/nginx -s reload
使用浏览器访问192.168.2.5/a.html看到的是b.html的内容

 

 

相同网站不同页面
rewrite ^/a.html$ /b.html redirect;   //在刚刚的配置中添加redirect
sbin/nginx -s reload
使用http://192.168.2.5/a.html路径访问网站时,地址栏同时发生变化

 

不同网站间跳转
rewrite / http://www.baidu.com;    //访问192.168.2.5的网站可以
跳转到www.tmooc.cn
sbin/nginx -s reload  

* 每次写完配置文件都要重新加载

 sbin/nginx -s reload

 

不同网站间跳转
rewrite /(.*) http://www.baidu.com/$1;    //访问老网站会跳到新网站,同时会携带所访问的页面
sbin/nginx -s reload  

 

 

 

修改配置文件,删除原有地址重写,原地添加

if  ($http_user_agent  ~*  firefox){   //如果用户使用了火狐浏览器

rewrite  /(.*)  /firefox/$1;  //就进行地址重写操作,让用户看到火狐专属页面

}         

 测试:

火狐浏览器

 系统自带浏览器:

 

选项

redirect    临时重定向   状态码  302   爬虫不感兴趣

permanent  永久重定向  状态码  301   爬虫感兴趣

以下两种写法对于用户来说效果一样,但是对百度这样的网站不同
rewrite  ^/a.html$  /b.html  permanent;
rewrite  ^/a.html$  /b.html  redirect;

 

last  不再读其他rewrite

echo  "nginx-c~~"  >   html/c.html     //准备素材c页面

rewrite  /a.html  /b.html  last;   //不加last的话nginx会把多个rewrite语句综合处理

结果就是看a页面结果跳到c页面了,加了last的话可以避免这个情况

rewrite  /b.html  /c.html ;

 

测试浏览器,访问到的是c.html      a>b>c

  

 改为last:

 测试:

 

 

break  不再读其他语句   

     location / {     //此处为默认的location

rewrite /a.html /b.html break;    //将last改为break可以阻止后面的语句,此处如果是last则无法阻止后面location语句中的rewrite语句

            root   html;

            index  index.html index.htm;

        }

location /b.html {    //这里是新添加的location

rewrite /b.html /c.html;
}

 测试:

访问a显示b.html 

不在执行c.html

 

举报

相关推荐

0 条评论