nginx 内部调整

nginx 内部调整:当前端调用一个control时,该controll执行调整回nginx中,跳转到controll2,

这样浏览器只能看到一个第一个controll地址,controll可以作为controll2的代理,加一些权限的控制;

-----------controller

@RestController
@RequestMapping("/faAttachments")

public class FAAttachmentController {
@Value("${file.commonDownload.url}")
private String fileCommonDownloadUrl;

@Value("${file.commonDownload.factor}")
private String fileCommonDownloadFactor;
/*
* 文件下载
*/
@GetMapping("/{id}")
public void download(@PathVariable("id") String id, HttpServletRequest request, HttpServletResponse response)
throws RestError {
//各个业务权限判断
//验证************begin
//验证************end

//公共下载模块
response.setStatus(307);
long time = System.currentTimeMillis();
String factor = this.fileCommonDownloadFactor;
String sha1 = SHA1Util.getSha1(id+time+factor);
//response.setHeader("Location", "http://127.0.0.1:5881/portal/commonDownload/unPermission/"+id+"?time="+time+"&sha1="+sha1);
response.setHeader("Location", this.fileCommonDownloadUrl+"/"+id+"?time="+time+"&sha1="+sha1);
}


}



------nginx配置


location /portal/test {
access_log  logs/portal.access.log upstreamlog;
proxy_pass  http://tomcat/portal/test;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass_request_headers      on;
proxy_intercept_errors on;
error_page 307 = @handle_redirect;
}
location @handle_redirect {
resolver 127.0.0.1;
set $saved_redirect_location '$upstream_http_location';
proxy_pass $saved_redirect_location;

}



@GetMapping
public void redirect(HttpServletResponse response) throws IOException{
response.setStatus(307);
response.setHeader("Location", "http://127.0.0.1:8888/portal/verifyCode");
}

### 配置Nginx Docker容器指向内部服务 为了使Nginx能够代理请求至内部的服务,需调整Nginx配置文件来指定目标地址。假设内部服务位于同一网络内的另一个Docker容器中,并监听特定端口。 #### 修改Nginx配置文件 在`nginx.conf`或站点专用的`.conf`文件里加入如下所示的location区块: ```nginx server { listen 80; server_name localhost; location /service/ { proxy_pass http://internal_service:port/; 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-Forwarded-Proto $scheme; } } ``` 上述代码片段展示了如何设置反向代理规则[^1]。这里的关键部分是`proxy_pass`指令后的URL,它指定了内部服务的位置和端口号。对于其他HTTP头信息的设定,则有助于传递客户端的真实信息给后端应用服务器。 #### 同一Docker Compose项目下共享网络 如果Nginx和其他微服务都在同一个Docker Compose文件管理之下,那么可以直接利用服务名称作为主机名来进行通信,因为它们默认处于相同的自定义桥接网络上。此时只需确保`docker-compose.yml`中有恰当的服务定义即可。 ```yaml version: '3' services: web: image: nginx:latest ports: - "80:80" volumes: - ./nginx/conf.d:/etc/nginx/conf.d app: image: myapp:latest expose: - "3000" ``` 在此例子中,`web`代表Nginx容器而`app`则是内部的应用程序容器。通过这种方式,可以在Nginx配置里的`proxy_pass`语句使用`http://app:3000`这样的形式去引用应用程序容器[^2]。 #### 跨不同Compose项目或其他方式启动的服务间通讯 当涉及到跨多个独立部署单元(比如不同的Docker Compose项目)或是直接由`docker run`命令启动的服务时,就需要额外考虑网络连接问题。一种解决方案是在创建这些服务的时候显式地把它们加入到共同的用户定义网桥网络中。 ```bash # 创建一个新的网络 docker network create shared_network # 将现有容器链接至此网络 docker network connect shared_network existing_container_id_or_name # 或者,在启动新容器时指定该网络 docker run --network=shared_network ... ``` 完成以上操作之后,就可以按照前面提到的方法编辑Nginx配置并使用对应的服务名字进行代理转发了[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值