通过浏览器访问远程服务器 IP 地址是不是默认解析为端口 80?
Posted
技术标签:
【中文标题】通过浏览器访问远程服务器 IP 地址是不是默认解析为端口 80?【英文标题】:Does accessing a remote server IP address via the browser default resolve to port 80?通过浏览器访问远程服务器 IP 地址是否默认解析为端口 80? 【发布时间】:2021-12-29 00:58:15 【问题描述】:我有一个使用 nginx 作为反向代理的容器化应用程序。如果我将 nginx 端口映射为1337:80
,我只能通过<MY_INSTANCE_IP>:1337
访问我的网站。如果我将 nginx 端口映射为80:80
,我可以通过<MY_INSTANCE_IP>
访问我的网站。更改我的 docker-compose 文件中的端口有效,但我想知道原因。
我的 docker-compose 配置:
version: '3.7'
services:
web:
build:
context: .
dockerfile: ./compose/production/flask/Dockerfile
image: flask_web
command: /start
volumes:
- .:/app
expose:
- 5000
env_file:
- .env/.prod
environment:
- FLASK_APP=app
nginx:
build: ./compose/production/nginx
ports:
- 80:80
depends_on:
- web
我的 nginx 配置:
upstream flask-app
server web:5000;
server
listen 80;
server_name <MY_INSTANCE_IP>;
location /
proxy_pass http://flask-app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
# client_max_body_size 20M;
【问题讨论】:
【参考方案1】:因此,您已将 nginx 设置为侦听端口 80(默认 http)。当你在 docker-compose 中为你的 nginx 服务设置端口时,第一个数字是 docker 将在主机上“发布”服务的端口,第二个数字,在冒号 (:) 之后,是服务器正在侦听的端口“内部”容器。看: https://docs.docker.com/config/containers/container-networking/#published-ports 了解更多详情。
【讨论】:
我知道端口是如何工作的,这不是问题所在。问题是为什么我不需要像端口 1337 配置那样显式键入端口 80 来访问 IP 啊啊啊,我明白了。这是因为 http 协议的默认端口是 80,所以您的浏览器会自动假定 http 使用端口 80,https URL 使用端口 443 啊,谢谢。我有点认为它会自动执行此操作,但在任何地方都找不到。以上是关于通过浏览器访问远程服务器 IP 地址是不是默认解析为端口 80?的主要内容,如果未能解决你的问题,请参考以下文章