案例4:访问course-11-22-33.html实际真实访问/course/11/22/33/course_33.html
1. [root@Web01 conf.d]# mkdir -p /code/rewrite/course/ 2. 11/22/33 3. [root@Web01 conf.d]# echo '/code/rewrite/course/11/22/33' > 4. /code/rewrite/course/11/22/33/course_33.html 5. [root@Web01 conf.d]# vim /etc/nginx/conf.d/rewrite.conf 6. server { 7. listen 80; 8. server_name rewrite.koten.com; 9. root /code/rewrite; 10. index index.html; 11. 12. location / { 13. rewrite ^/course-(.*)-(.*)-(.*).html$ /course/$1/$2/$3/course_$3.html redirect; 14. } 15. } 16. ~ 17. ~ 18. ~ 19. ~ 20. ~ 21. "rewrite.conf" 10L, 230C written 22. [root@Web01 conf.d]# systemctl restart nginx
案例5:将http请求跳转到https
1. [root@Web01 conf.d]# vim /etc/nginx/conf.d/rewrite.conf 2. server { 3. listen 443; 4. server_name rewrite.koten.com; 5. 6. location / { 7. root /code; 8. index index.php index.html; 9. } 10. } 11. 12. server { 13. listen 80; 14. server_name rewrite.koten.com; 15. 16. rewrite ^(.*) https://$server_name$1 redire 17. ct; 18. "rewrite.conf" 17L, 285C written 19. [root@Web01 conf.d]# nginx -t 20. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 21. nginx: configuration file /etc/nginx/nginx.conf test is successful 22. [root@Web01 conf.d]# systemctl restart nginx
案例6:错误页跳转
1. [root@Web01 rewrite]# cat /etc/nginx/conf.d/rewrite.conf 2. server { 3. listen 80; 4. server_name rewrite.koten.com; 5. 6. root /code/rewrite; 7. 8. error_page 403 404 500 501 502 @error_test; 9. location @error_test { 10. rewrite ^(.*)$ /404.png break; 11. } 12. } 13. 14. [root@Web01 rewrite]# systemctl restart nginx
案例7:在跳转的请求行后加上想要的参数&showoffline=1
1. [root@Web01 rewrite]# vim /etc/nginx/conf.d/rewrite.conf 2. server { 3. listen 80; 4. server_name rewrite.koten.com; 5. 6. set $args "&showoffline=1"; 7. location / { 8. root /code/rewrite; 9. index index.html; 10. } 11. if ($remote_addr = 10.0.0.1 ){ 12. rewrite (.*) http://rewrite.koten.com$1; 13. } 14. } 15. ~ 16. ~ 17. ~ 18. <rewrite.conf" 13L, 252C written 19. [root@Web01 rewrite]# systemctl restart nginx 20.
案例8:网站维护,指定IP正常访问,其他IP跳转至维护页面
1. [root@Web01 rewrite]# vim /etc/nginx/conf.d/rewrite.conf 2. server { 3. listen 80; 4. server_name rewrite.koten.com; 5. root /code/rewrite; 6. charset utf-8,gbk; 7. 8. location / { 9. index index.html; 10. if ($remote_addr != "10.0.0.2"){ 11. rewrite ^(.*)$ /网站维护.jpg break; #如 12. 果来源IP不等于10.0.0.1,则跳转维护页面 13. } 14. } 15. 16. 17. } 18. <rewrite.conf" 16L, 321C written 19. [root@Web01 rewrite]# systemctl restart nginx
Nginx内置参数
1. $args #这个变量等于请求行中的参数。 2. $content_length #请求头中的Content-length字段。 3. $content_type #请求头中的Content-Type字段。 4. $document_root #当前请求在root指令中指定的值。 5. $host #请求主机头字段,否则为服务器名称。 6. $http_user_agent #客户端agent信息 7. $http_cookie #客户端cookie信息 8. $limit_rate #这个变量可以限制连接速率。 9. $request_body_file #客户端请求主体信息的临时文件名。 10. $request_method #客户端请求的动作,通常为GET或POST。 11. $remote_addr #客户端的IP地址。 12. $remote_port #客户端的端口。 13. $remote_user #已经经过Auth Basic Module验证的用户名。 14. $request_filename #当前请求的文件路径,由root或alias指令与URI请求生成。 15. $query_string #与$args相同。 16. $scheme #HTTP方法(如http,https)。 17. $server_protocol #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。 18. $server_addr #服务器地址,在完成一次系统调用后可以确定这个值。 19. $server_name #服务器名称。 20. $server_port #请求到达服务器的端口号。 21. $request_uri #包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。 22. $uri #不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。 23. $document_uri #与$uri相同。 24. $X-Forwarded-For:HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。标准格式如下:X-Forwarded-For: client1, proxy1, proxy2
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!