跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Docker环境下,如何用Nginx实现Laravel多语言站点跳转?

Docker环境下,利用Nginx实现Laravel多语言站点无缝切换 本文介绍如何在无需修改Laravel应用代码的情况下,使用Nginx实现部署在Docker容器中的Laravel多语言站点跳转。 假设目标域名是“aa.com”,需要支持英语(aa.com/en)、日语(aa.com/jp)和西班牙语(aa.com/es)版本,同时保持原有URL跳转不变。 为了实现每个语言版本的后台管理独立,我们将为每种语言部署一个独立的Docker容器。 直接使用不同
root
目录的方法在Docker环境下不可行,因为容器内路径对主机不可见。 因此,我们需要借助Nginx的
upstream
和
proxy_pass
指令。 每个语言版本运行在独立的Docker容器中,并暴露不同的端口。 Nginx作为反向代理,根据请求的域名或子路径将请求转发到相应的容器。 以下示例展示如何使用
upstream
块定义每个语言版本的应用服务器,并用
proxy_pass
指令进行请求转发: Docker Sandbox 创建并管理 Docker 沙箱虚拟机环境以安全执行代理。适用于运行不受信任代码、探索包或隔离代理工作负载。支持 Claude、Codex、Copilot、Gemini 和 Kiro 代理,并提供网络代理控制。 下载
upstream es.domain.com { server 127.0.0.1:8881; # server2... 可添加更多服务器 } upstream jp.domain.com { server 127.0.0.1:8882; # server3... 可添加更多服务器 } server { server_name es.domain.com; location / { client_max_body_size 256m; proxy_pass http://es.domain.com; # 注意此处改为http } } server { server_name jp.domain.com; location / { client_max_body_size 256m; proxy_pass http://jp.domain.com; # 注意此处改为http } }
es.domain.com
和
jp.domain.com
代表不同语言版本的域名,8881和8882是对应Docker容器暴露的端口。 您可以根据实际情况修改这些值。
upstream
块定义后端服务器地址,
proxy_pass
指令将请求转发到指定的
upstream
。 也可以直接在
server
块中使用
proxy_pass
指向
http://127.0.0.1:端口
,无需定义
upstream
,这简化了配置,但可读性略逊。
client_max_body_size
设置客户端请求最大体积,可根据需要调整。 注意:示例中将
https
改为
http
,请根据实际情况选择合适的协议。 通过这种方法,Nginx根据域名或子路径将请求转发到正确的Docker容器,从而实现多语言站点跳转,且无需修改Laravel应用代码。

相关文章