【注意】最后更新于 December 2, 2019,文中内容可能已过时,请谨慎使用。
通过docker-compose编排的容器总是有一些奇怪的问题
问题核心就是go-server和nginx所属不同的容器, 需要外界能访问到go的服务就需要进行转发了
如果是在同一个容器中只需要:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
server {
listen 80;
server_name .a.com;
charset utf-8;
access_log /home/a.com.access.log;
location /(css|js|fonts|img)/ {
access_log off;
expires 1d;
root "/path/to/app_a/static";
try_files $uri @backend;
}
location / {
try_files /_not_exists_ @backend;
}
location @backend {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8080;
}
}
|
beego-nginx部署
那么如果是两个容器当中呢? 基于上面的例子, 我们需要用到upstream
,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
upstream go_server_proxy {
# 这里的server 需要用到 容器名:端口 的形式
server go_server:9090;
}
server {
listen 80;
server_name localhost;
root /var/www;
index index.html;
charset utf-8;
access_log /var/log/nginx/def.access.log;
location /(css|js|fonts|img)/ {
access_log off;
expires 1d;
root "/var/www/static";
try_files $uri @backend;
}
location / {
try_files /_not_exists_ @backend;
}
location @backend {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://go_server_proxy;
}
}
|
这样做的原因是容器之间的ip并不固定, 使用容器名做host地址是更简单的选择
文章作者
GPF
上次更新
2019-12-02
(521dbfe)