首页 新闻 会员 周边 捐助

aspnetcore 在docker中运行端口映射问题

0
悬赏园豆:5 [已解决问题] 解决于 2021-02-02 15:19
Jonny-Xhl的主页 Jonny-Xhl | 小虾三级 | 园豆:691
提问于:2021-02-01 15:37
< >
分享
最佳答案
0

44383 端口接收到你的请求,然后吧request的数据转发到80端口, request里面数据{host:ip, port:44383 }. 所以你看到的是44383(其实这里就是从request.header里面取出来的信息).
你如果自己加日志打印 httpcontext.connection.localaddress 大概是这样子哈, 你就能看到真正的本地实际端口是什么的.

然后你的这个重定向问题, 说得清楚一点, 访问什么, 代码逻辑是什么, 307是谁重定向的,

收获园豆:5
czd890 | 专家六级 |园豆:14488 | 2021-02-01 16:46

代码我发布后在iis生产上是正常运行的。

过程是这样的:
通过Dockerfile构建镜像-->推送到阿里-->开发内部服务器拉取镜像-->启动项目

  • 启动项目
docker run -it -d -p 44383:80 --name file44383 registry.cn-chengdu.aliyuncs.com/cysoft/cy-modules-filemanagement:0.2.1

至于重定向是我猜测的,只是访问:http://宿主机IP:44383就直接给我跳转到了上面截图的地址。

Jonny-Xhl | 园豆:691 (小虾三级) | 2021-02-01 17:17

@Jonny-Xhl:

  1. docker那是端口转发, iis 那就proxy, 原理不一样. 没得比的.

  2. 然后你的这个重定向问题, 说得清楚一点, 访问什么, 代码逻辑是什么, 307是谁重定向的,

czd890 | 园豆:14488 (专家六级) | 2021-02-01 19:08

@czd890: 代码逻辑就是一个文件上传下载。

Jonny-Xhl | 园豆:691 (小虾三级) | 2021-02-02 09:07

@Jonny-Xhl:

仔细看了一下你的截图, 你是访问 http 被重定向到了https 吧?

czd890 | 园豆:14488 (专家六级) | 2021-02-02 10:58

@czd890: 是的

Jonny-Xhl | 园豆:691 (小虾三级) | 2021-02-02 12:57

@Jonny-Xhl: startup里面吧配置自动重定向的代码删除就可以了. 大约是app.usehttpsredirect

czd890 | 园豆:14488 (专家六级) | 2021-02-02 13:00

@czd890: 非常感谢!
以前还忽略了这个重定向中间件,看了一下官网得已解惑。

  • 添加配置HttpsRedirectionOptions
    if (!_env.IsDevelopment())
    {
            services.AddHttpsRedirection(options =>
            {
                options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
                options.HttpsPort = 443;
            });
    }
    
Jonny-Xhl | 园豆:691 (小虾三级) | 2021-02-02 15:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册