容器
下面这日志是我在docker内查询的系统文本日志。
按照分析是监听的 http://0.0.0.0:80 https://0.0.0.0:443,在日志中怎么会收到 :44383的请求日志呢?
在浏览器运行
我在浏览器运行访问 https://192.168.3.220/api/file-management/files/16d5f71df24b4eb290bd31fadf09a7d3 , 结果给我重定向了!!!
44383 端口接收到你的请求,然后吧request的数据转发到80端口, request里面数据{host:ip, port:44383 }. 所以你看到的是44383(其实这里就是从request.header里面取出来的信息).
你如果自己加日志打印 httpcontext.connection.localaddress 大概是这样子哈, 你就能看到真正的本地实际端口是什么的.
然后你的这个重定向问题, 说得清楚一点, 访问什么, 代码逻辑是什么, 307是谁重定向的,
代码我发布后在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:
docker那是端口转发, iis 那就proxy, 原理不一样. 没得比的.
然后你的这个重定向问题, 说得清楚一点, 访问什么, 代码逻辑是什么, 307是谁重定向的,
@czd890: 代码逻辑就是一个文件上传下载。
@Jonny-Xhl:
仔细看了一下你的截图, 你是访问 http
被重定向到了https
吧?
@czd890: 是的
@Jonny-Xhl: startup里面吧配置自动重定向的代码删除就可以了. 大约是app.usehttpsredirect
@czd890: 非常感谢!
以前还忽略了这个重定向中间件,看了一下官网得已解惑。
HttpsRedirectionOptions
if (!_env.IsDevelopment())
{
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
options.HttpsPort = 443;
});
}