JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

基于Docker搭建的Nginx反向代理宿主机

wys521 2024-10-23 15:49:44 精选教程 45 ℃ 0 评论

在使用 Docker 部署 Nginx 的过程中,有些开发者会遇到如何让前端项目能够访问后端项目的问题,同时还需要能够动态调试后端代码,而不需要频繁地修改Nginx中转发的宿主机地址的问题。

这时可以通过在 Nginx 配置中使用特殊的 DNS 条目

 host.docker.internal

将请求反向代理到宿主机,从而实现前后端联调和调试。但需要注意的是,host.docker.internal 只在 Docker for Mac、Docker for Windows 和 Docker Desktop for Linux 中可用,而且需要 Docker 版本高于 18.03。以下是实现该方案的具体步骤:

在 Nginx 配置中增加如下配置:

server {
  listen  80;
  server_name localhost;

  location ^api {
    rewrite ^/api(.*)$ $1 break;
    proxy_pass http://host.docker.internal:8080;
    proxy_set_header Host $host;
    proxy_set_header Referer $http_referer;
  }
}

"location" 指令用于匹配 URL,"/api" 是要匹配的 URL 前缀,代表所有以 "/api" 开头的请求都将被匹配。"rewrite" 指令将 URL 中的 "/api" 部分去掉,即将 "/api" 后面的内容全部保存到 $1 变量中,这个变量将被用于转发请求。"proxy_pass" 指令将修改过 URL 的请求转发到 "http://host.docker.internal:8080"。如果后端服务需要一些额外的头部信息,例如 Host 头部、Referer 头部等,需要使用 "proxy_set_header" 指令进行设置。这将在将请求转发到后端服务时设置 Host 和 Referer 头部。

修改配置之后重启Nginx。此时,前端的请求就会被代理到idea中正在运行的服务中且不受idea重启影响。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表