我想在一个只能通过一个域访问的主机 VM 上运行多个 docker 容器。我想使用请求 url 来区分容器。为了实现这一点,我试图将 nginx 服务器设置为反向代理,并在容器中运行它,同时侦听端口 80。
假设我有两个容器在端口 3000 和 4000 上运行。路由如下:
docker-host.example.com/3000 -> this will access container exposing port 3000
docker-host.example.com/4000 -> this will access container exposing port 4000
Run Code Online (Sandbox Code Playgroud)
问题是我目前正在尝试为这种反向代理定义静态规则。它在没有任何位置的情况下工作正常:
upstream application {
server <docker container>:3000;
}
server {
listen 80;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://application/;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我添加端口位置并尝试使用 localhost:{nginx port}/3000/ 访问它时
upstream application {
server <docker container>:3000;
}
server {
listen 80; …Run Code Online (Sandbox Code Playgroud) 我为网站创建了一个小模块,它使用SignalR来检测用户是否需要刷新浏览器.在本地它可以工作,但是当代码投入生产时,会产生数千个错误:
服务器端:( mainProject/Hubs目录):
public class AppVersionNotifierHub : Hub<IAppVersionNotifierHub>
{
public void CheckAppVersion(string version)
{
// if client has diffrent version, invoke callback
if (Global.Version != version)
{
Clients.Caller.NewAppVersion(Global.Version);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Javascript(类型脚本):
this.subscribeVersionChecker = () => {
var hub = (<any>$.connection).appVersionNotifierHub;
hub.client.newAppVersion = (version: string) => {
.. some logic
}
$.connection.hub.start(() => {
hub.server.checkAppVersion(customerVersion.text());
});
$.connection.hub.reconnected(() => {
setTimeout(() => {
hub.server.checkAppVersion(customerVersion.text());
}, 5000); // Restart connection after 5 seconds.
});
$.connection.hub.disconnected(() …Run Code Online (Sandbox Code Playgroud) 我需要执行一项搜索,在查询中我将提供应由一个字段匹配的多个值。
之前我总是需要按两个值进行搜索,所以代码如下所示:
Filter<Document>.Query(q =>
q.Term(p => p.FieldName, value1) ||
q.Term(p => p.FieldName, value2));
Run Code Online (Sandbox Code Playgroud)
但现在我有一个值列表。我没有看到任何这样的例子。我正在使用 NEST 1.7.1 感谢您的帮助。