网站首页 > 技术教程 正文
1.url 转发
nginx中 $1,$2,$3是什么 如:set $para $1
Nginx中,set $para $1,$1表示路径中正则表达式匹配的第一个参数。
以下是一个示例,用以实验$1,$2。
如:location ~/yxl/(.*)/(.*) {
set $para1 $1
set $para2 $2
content_by_lua_block {
ngx.say(ngx.var.para1)
ngx.say(ngx.var.para2)
}
}
此时,若访问路径为localhost:8080/yxl/qwe/asd时,则浏览器会输出
qwe
asd
alias正则表达式
location ~ /mytest/(.*) {
alias /usr/local/nginx/html/$1;
}
2.配置403错误页
error_page 403 http://www.hk515.com/403.html;
3.nginx做非80端口转发
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://147.16.24.175:9500 ;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
但是如果nginx的监听端口不是默认的80端口,改为其他端口如81端口。
后端服务器中request.getServerPort()无法获得正确的端口,返回的仍然是80;
在response.sendRedirect()时,客户端可能无法获得正确的重定向url。
正确的配置方法为
在 $host之后加上端口号,如$host:83
server {
listen 83;
server_name localhost;
location / {
proxy_pass http://147.16.24.175:9500 ;
proxy_set_header Host $host:83;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
4.is_matched
location /reportDetail {
set $is_matched 0;
if ( $args ~* ^aid=646$ ){
set $is_matched 1;
}
if ($is_matched = 0) {
set $args "aid=646";
rewrite ^/(.*) /reportDetail redirect;
break;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://idata;
}
5.Nginx下301重定向域名
在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等
第一种情况:访问a站定向到b站
server {
server_name www.a.com ;
rewrite ^(.*) http://www.b.com/$1 permanent;
}
第二种情况:不是访问a站的全部重定向到指定页面
server {
server_name www.a.com;
if ($host != ‘a.com' )
{
rewrite ^/(.*)$ http://www.b.com/$1 permanent;
}
}
第三种带WWW或者不带WWW之间的跳转
server
{
server_name c.net
rewrite ^/(.*)$ http://www.c.net/$1 permanent;
}
server
{
listen 80;
server_name www.c.com c.com;
if ($host != ‘www.c.com' ) {
rewrite ^/(.*)$ http://www.c.com/$1 permanent;
}
这样就是用户直接访问c.com直接跳转的www.c.com。即让不带www的域名跳转到带www的域名
6.nginx rewrite 实现二级域名跳转
当访问http://abc.jbxue.com跳转到http://www.jbxue.com/test/abc/
方法一:
这种方法浏览器地址会变www.jbxue.com/test/abc
实现访问如下:
server {
listen 80;
server_name www.jbxue.com;
location / {
root /data/test;
index index.html;
}
}
server {
listen 80;
server_name *.jbxue.com;
if ( $http_host ~* "^(.*)\.jbxue\.com#34;) {
set $domain $1;
rewrite ^(.*) http://www.jbxue.com/test/$domain/ break;
}
}
方法二、
当访问http://abc.jbxue.com跳转到http://www.jbxue.com/test/abc/
server {
listen 80;
server_name *.jbxue.com;
root /usr/local/www;
#这是里可以加多个目录,如果不加目录,会无法访问到abc.jbxue.com/目录下的文件,如图片目录/images
location ~ ^/(jbxue|images|styles)/
{
proxy_redirect off;
proxy_set_header Host www.jbxue.com;
proxy_pass http://192.168.1.2:8080;
}
location / {
set $domain default;
if ( $http_host ~* "^(.*)\.jbxue\.com#34;) {
set $domain $1;
}
rewrite ^/(.*) /test/$domain/$1 last;
}
access_log off;
}
7.$http_name
匹配任意请求头字段; 变量名中的后半部分“name”可以替换成任意请求头字段,如在配置文件中需要获取http请求头:“Accept-Language”,那么将“-”替换为下划线,大写字母替换为小写,形如:$http_accept_language即可。
1.根据 请求头信息判断转向(nginx配置)
a.请求内容大于20的
location / {
if ( $content_length > 20 )
{
proxy_pass http://backend_a;
}
}
b.如果请求类型为 User
RequestType: User
location / {
if ( $http_requesttype = "User" )
{
proxy_pass http://backend_a;
}
}
8.拒绝访问
server {
listen 80;
server_name kxcdr.dl.gxpan.cn;
root /data1/kxcdr/;
index index.php index.html index.htm;
access_log /data/log/nginx/kxcdr/kxcdr.dl.gxpan.cn.access.log;
error_log /data/log/nginx/kxcdr/kxcdr.dl.gxpan.cn.error.log;
# error_page 404 /index.html;
# error_page 500 502 503 504 /index.html;
location / {
if (!-f $request_filename){
rewrite ^.*$ /index.php last;
}
}
}
当访问无匹配文件时,跳转到 /index.php,文件不存在,即出现 500错误
last 301错误
9.#nginx 日志切割 logroate
a.宿主机部署
apt-get update
apt-get install -y logrotate
b./etc/logrotate.d/nginx
c.手动执行测试
logrotate -f /etc/logrotate.d/nginx
d.重载nginx
docker exec nginx nginx -s reload
猜你喜欢
- 2024-09-09 「Nginx」Web/代理服务器的瑞士军刀:重写与定位
- 2024-09-09 ingress-nginx常用注解指南(nginx详细讲解)
- 2024-09-09 Nginx反向代理常用配置(nginx反向代理设置)
- 2024-09-09 nginx+springboot使用https重定向的解决办法
- 2024-09-09 Nginx从0基础到进阶实战!运维工程师必看
- 2024-09-09 深度|掌握Nginx监控运维,这一篇足矣!
- 2024-09-09 详解nginx配置location总结及rewrite规则写法
- 2024-09-09 nginx之Rewrite实战(nginx rewrite_by_lua)
- 2024-09-09 详解 Nginx配置静态内容服务器|附案例说明
- 2024-09-09 精品推荐!超简单Nginx开启SSL与重定向优化
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)