nginx url问题

测试需求,url自动加/后,发现重定向不带端口,即为 test.a.com:3443/abc  nginx自动重定向301到 test.a.com/abc,端口消失。

分析可能和nginx默认配置server_name_in_redirect 与 port_in_redirect 有关

1、server_name_in_redirect on(默认),URL 重定向为: server_name 中的第一个域名 + 目录名 + /;
2、server_name_in_redirect off,URL 重定向为: 原 URL 中的域名 + 目录名 + /。
If server_name_in_redirect is on, then Nginx will use the first value of the server_name directive for redirects. If server_name_in_redirect is off, then nginx will use the requested Host header.

更改nginx配置

server_name test.a.com:3443;
server_name_in_redirect on

即强制使用server_name得第一个域名,自己配置上端口

重启生效。

 

Syntax:server_name_in_redirect on | off;
Default:
server_name_in_redirect off;
Context:httpserverlocation

Enables or disables the use of the primary server name, specified by the server_name directive, in absolute redirects issued by nginx. When the use of the primary server name is disabled, the name from the “Host” request header field is used. If this field is not present, the IP address of the server is used.

Syntax:port_in_redirect on | off;
Default:
port_in_redirect on;
Context:httpserverlocation

Enables or disables specifying the port in absolute redirects issued by nginx.

The use of the primary server name in redirects is controlled by the server_name_in_redirect directive.

 

转载于:https://www.cnblogs.com/zhengchunyuan/p/10032319.html

### NginxURL 映射规则的配置 在 Nginx 的配置过程中,URL 映射通常通过 `location` 块来实现。以下是关于如何在 Nginx 中配置 URL 映射规则的具体说明: #### 1. 使用精确匹配 当需要将某个具体的路径映射到指定的目标时,可以使用等于号 (`=`) 进行精确匹配。这种情况下,只有完全匹配该路径的请求才会触发此规则。 ```nginx location = /exact/path { proxy_pass http://backend_server; } ``` 上述代码表示 `/exact/path` 请求会被转发至 `http://backend_server`[^3]。 --- #### 2. 使用前缀匹配 对于以某一段字符串开头的路径,可以通过简单的前缀匹配完成映射。例如,所有以 `/api/` 开头的请求都可以被映射到特定的服务上。 ```nginx location /api/ { proxy_pass http://localhost:3000/; } ``` 这段配置表明任何访问 `/api/*` 的请求都会被重定向到运行于本地端口 3000 上的应用程序。 --- #### 3. 正则表达式匹配 如果需求较为复杂,比如涉及动态参数或者特殊字符,则可借助正则表达式的强大功能来进行灵活处理。注意,在使用正则之前需加上波浪线 (~ 表示区分大小写, ~* 不区分大小写)。 ```nginx location ~ \.(jpg|jpeg|png)$ { root /var/www/images; } ``` 这里设置了针对图片文件扩展名 (`.jpg`, `.jpeg`, 或者 `.png`) 的静态资源加载逻辑[^4]。 --- #### 4. 反向代理设置 为了使外部能够正常访问内部服务,常常需要用到反向代理技术。下面是一个典型的例子展示如何把来自客户端的不同子目录下的请求分别转交给不同的后端服务器处理。 ```nginx server { listen 80; server_name localhost; location /serviceA/ { rewrite ^/serviceA/(.*)$ /$1 break; proxy_pass http://backend_service_a/; } location /serviceB/ { rewrite ^/serviceB/(.*)$ /$1 break; proxy_pass http://backend_service_b/; } } ``` 以上片段展示了两个独立的服务 A 和 B 如何各自拥有专属的 API 接口入口,并且这些接口都被隐藏到了统一对外暴露的一个 IP 地址后面[^5]。 --- #### 5. 动态主机名称解析 有时还需要依据 Host 头部的内容决定实际要连接哪个上游节点。这可通过 map 指令预先定义好对应关系后再应用到后续 locations 当中去。 ```nginx map $host $name { hostnames; default ""; } upstream backend { server app1.example.com; server app2.example.com; } server { ... location / { set $target "http://${name}"; proxy_pass $target; } } ``` 此处利用 `$host` 自变量自动选取合适的 upstream 组合成员作为目标地址。 --- ### 总结 综上所述,Nginx 提供了多种方式让用户可以根据实际情况定制化自己的 URL 映射策略。无论是基础的固定路径替换还是高级别的条件分支判断都能轻松应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值