可以解决生产环境中以下问题:
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