Nginx服务器下的地址重写配置

 可以解决生产环境中以下问题:

1.所有访问a.html的请求,重定位到b.html;

2.所有访问192.168.4.5的请求重定位至某个域名;

3.所有访问192.168.4.5/下面子页面,重定位至某个域名/下相同的页面;

4.实现firefox与curl访问相同页面文件,返回不同的内容。


关于Nginx服务器的地址重写,主要用到的配置参数是rewrite:

-rewrite regex replacement flag

-rewrite 旧地址 新地址 [选项]


问题一的解决思路:

[root@proxy html]# vim /usr/local/nginx/conf/nginx.conf

在对应的server中添加代码

rewrite /a.html /b.html redirect;

如果需要在浏览器显示的是真实的访问路径,则添加代码

rewrite /a.html /b.html redirect;

添加效果如下:

server {

        listen       80;
        server_name  www.a.com;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
            rewrite /a.html /b.html redirect;
        }

问题二的解决思路:所有访问192.168.4.5的请求重定位至某个域名;

[root@proxy html]# vim /usr/local/nginx/conf/nginx.conf

在对应的server中添加代码

rewrite ^/  http://www.baidu.cn/;

添加效果如下:

server {

        listen       80;
        server_name  www.a.com;
        auth_basic "Input Password:";
        auth_basic_user_file "/usr/local/nginx/pass";
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        rewrite ^/ http://www.baidu.cn/;
        location / {
            root   html;
            index  index.html index.htm;
            #rewrite /a.html /b.html redirect;

        }

问题三的解决思路:所有访问192.168.4.5/下面子页面,重定位至某个域名/下相同的页面;

[root@proxy html]# vim /usr/local/nginx/conf/nginx.conf

在对应的server中添加代码

    rewrite ^/(.*) http://www.tmooc.cn/$1;

添加效果如下:

server {

        listen       80;
        server_name  www.a.com;
        auth_basic "Input Password:";
        auth_basic_user_file "/usr/local/nginx/pass";
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        rewrite ^/(.*) http://www.tmooc.cn/$1;
        location / {
            root   html;
            index  index.html index.htm;

        }

问题四的解决思路:实现firefox与curl访问相同页面文件,返回不同的内容

1.做好测试页面

[root@proxy ~]# echo "this is the firefox page" > /usr/local/nginx/html/firefox/test.html
[root@proxy ~]# echo "this is the curl Page" > /usr/local/nginx/html/test.html



2.在相应的server添加代码

     if ($http_user_agent ~* firefox) {
         rewrite ^(.*)$ /firefox/$1;

          }

添加效果如下:

server {
         listen       80;
       server_name  www.a.com;
        #charset koi8-r;
 
          location / {
              root   html;
              index  index.html index.htm;
            
 
 }
          if ($http_user_agent ~* firefox) {
         rewrite ^(.*)$ /firefox/$1;

          }

}

3.进行测试

[root@proxy ~]# firefox http://192.168.4.5/test.html

[root@proxy ~]# curl http://192.168.4.5/test.html





 
      





猜你喜欢

转载自blog.csdn.net/zhydream77/article/details/80206509