是否可以在 Golang 中处理多个域?
Is it possible to handle multi domains in Golang?
我想用 Golang 处理多域。
像这样,如果浏览器发送请求 http://sampledomain.me 用特定的 Golang 程序处理它,
在其他情况下,我希望在一台服务器上运行多个程序并告诉每个程序处理每个域。
所有程序都在 80 上侦听,许多域指向一台服务器。
有人可以帮助我吗?
谢谢...
是的,这是可能的,因为域在 URL 中,您可以轻松过滤要使用的处理程序。我找到了这个指南 http://codepodu.com/subdomains-with-golang/
您的 Go 程序不能全部侦听端口 80。您需要在前面添加一些东西,例如 nginx,以充当反向代理。以下 nginx 配置摘录会将两个域转发到两个不同的程序,每个程序侦听不同的端口:
server {
listen 80;
server_name www.domain1.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_read_timeout 600s;
}
}
server {
listen 80;
server_name www.domain2.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_read_timeout 600s;
}
}
你真的不需要前面的任何东西,比如nginx,
尽管在某些情况下建议这样做。
请在此处查找类似答案“”
我两者都用,但最喜欢第二种解决方案:
nginx 作为在多个端口上具有多个 Golang 应用程序的代理
即 GoApp1:8081 GoApp2:8082 GoApp3:8083 ....
服务器{
...
server_name www.example1.com example1.com;
...
地点 / {
proxy_pass app_ip:8081;
}
...
}
服务器 {
...
server_name www.example2.com example2.com;
...
地点 / {
proxy_pass app_ip:8082;
}
...
}
.
.
.
nginx 作为代理在同一端口 (8081) 上具有多个 Golang 应用程序
分隔符(Golang) func (u *URL) Hostname() string
服务器{
...
server_name www.example1.com example1.com;
...
地点 / {
proxy_pass app_ip:8081;
}
...
}
还有另一种方法(没有nginx):
sudo apt-get install iptables-persistent
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081
sudo netfilter-persistent save
sudo netfilter-persistent reload
我想用 Golang 处理多域。
像这样,如果浏览器发送请求 http://sampledomain.me 用特定的 Golang 程序处理它,
在其他情况下,我希望在一台服务器上运行多个程序并告诉每个程序处理每个域。
所有程序都在 80 上侦听,许多域指向一台服务器。
有人可以帮助我吗?
谢谢...
是的,这是可能的,因为域在 URL 中,您可以轻松过滤要使用的处理程序。我找到了这个指南 http://codepodu.com/subdomains-with-golang/
您的 Go 程序不能全部侦听端口 80。您需要在前面添加一些东西,例如 nginx,以充当反向代理。以下 nginx 配置摘录会将两个域转发到两个不同的程序,每个程序侦听不同的端口:
server {
listen 80;
server_name www.domain1.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_read_timeout 600s;
}
}
server {
listen 80;
server_name www.domain2.com;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_read_timeout 600s;
}
}
你真的不需要前面的任何东西,比如nginx, 尽管在某些情况下建议这样做。
请在此处查找类似答案“
我两者都用,但最喜欢第二种解决方案:
nginx 作为在多个端口上具有多个 Golang 应用程序的代理 即 GoApp1:8081 GoApp2:8082 GoApp3:8083 ....
服务器{ ... server_name www.example1.com example1.com; ... 地点 / { proxy_pass app_ip:8081; } ... } 服务器 { ... server_name www.example2.com example2.com; ... 地点 / { proxy_pass app_ip:8082; } ... } . . .
nginx 作为代理在同一端口 (8081) 上具有多个 Golang 应用程序 分隔符(Golang) func (u *URL) Hostname() string
服务器{ ... server_name www.example1.com example1.com; ... 地点 / { proxy_pass app_ip:8081; } ... }
还有另一种方法(没有nginx): sudo apt-get install iptables-persistent
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081
sudo netfilter-persistent save
sudo netfilter-persistent reload