62、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(六)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(五)

分析了 Host 字段在 HTTP 请求中的定义,作用,以及如何与 Nginx 的 server_name 配置项互动的,下面继续

Nginx 配置审视

OK,下面实践看下,首先修改本地 hosts 文件,模拟 DNS 行为(解析域名)

当前客户端用的是 Windows 系统,编辑文件 C:\Windows\System32\drivers\etc\hosts,在最后添加一行 127.0.0.1 hitweston.gitlab(这里可以随意替换成自己喜欢的名字),hitweston.gitlab 这个是公网域名,所以如果直接在浏览器输入,是找不到这个服务器的,也无法直接修改公共 DNS,让其指向远程服务器,但是可以在本机强制这个域名指向 127.0.0.1(也就是本机的回环地址)

OK,接着在 VSCode 中进行端口映射,这里涉及到内网穿透 + 端口映射,两个知识点,这里不熟悉的先回顾之前系列 blog
【OS】【Nuttx】【周边】效果呈现方案解析:端口映射(一)
【Ubuntu】【远程开发】内网穿透:反向隧道建立(一)

OK,然后在浏览器输入 http://hitweston.gitlab,注意,前面要加 http,因为当前 Web 服务器的配置只能支撑 http 的,而在现代浏览器中,如果在地址栏只输入域名,不加 http://,浏览器通常会默认尝试用 https://,而远程服务器只支持 http,就会导致访问失败

显式指定 http:// 后,就能正常打开远程 Web 页面,地址栏上提示的不安全,正式 http:// 协议的标志,但是没关系,因为这个通道只供个人使用,并且 HTTP 流量被封装在 SSH 加密通道里

其整个请求过程大致如下

OK,下面用浏览器简单察看下 HTTP 请求中的 Host 请求头,首先打开 Windows 下的 Edge 浏览器,按下 F12 打开开发者工具

选择网络选项卡,筛选器里选择全部,可以查看该页面下全部请求和响应

然后在地址栏访问 http://hitweston.gitlab,可以在网络下找到第一个请求 hitweston.gitlab

点击该请求,往下滑,可以看到 Host 请求头字段为 hitweston.gitlab

解读一下,这里的 Host: hitwyh.gitlab 表示客户端浏览器告诉远程 Web 服务器:我想要访问你这台机器上名为 hitwyh.gitlab 的站点,可以看到,虽然用户的请求实际是发到了 127.0.0.1:80(通过本地 hosts 文件解析),但 Host 头保留了原始域名,而不是 IP,然后 Nginx 就可以拿着这个值去匹配配置中的 server 块

bash 复制代码
server {
	listen *:80;
    server_name hitwyh.gitlab;
    ...
}

然后再说一个点,即使不配置 server_name,也可以访问到远程上的 Gitlab 服务?这里涉及到 Nginx 的匹配规则,在官方文档 How nginx processes a request 可以找到如下描述

这里面有几个点:

  • 首先,Nginx 只看 HTTP 请求头里的 Host 字段 ,通过 Host 字段去匹配所有 server 块中的 server_name,来判断这个请求应该交给哪个 server 块处理
  • 如果 Host 字段没有匹配到任何一个 server_name,或者请求里根本没有 Host 头,比如老式的 HTTP/1.0 客户端,那么 Nginx 就会把这个请求交给监听该端口的 default_server 默认服务器处理

OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(七)

相关推荐
kyriewen7 小时前
微软用Go重写TypeScript编译器,速度提升10倍,网友:这是“背叛”还是“救赎”?
前端·typescript·ecmascript 6
Ceelog7 小时前
久坐党自救指南:屏幕前 8 小时,身体到底在经历什么
前端·后端
西陵7 小时前
Agent 为什么会陷入 Doom Loop?OpenClaw 的破解之道
前端·人工智能·ai编程
Hyyy8 小时前
普通前端续命周报——第2周
前端
wuxinyan1238 小时前
工业级大模型学习之路030:Streamlit 企业级智能体前端工作台
前端·学习·streamlit·智能体
修己xj8 小时前
告别无效刷屏!TrendRadar:最快30秒部署的开源热点助手,让你只看真正关心的新闻
前端
anOnion9 小时前
构建无障碍组件之Slider Pattern
前端·html·交互设计
云水一下9 小时前
JavaScript 从零基础到精通系列:前世今生与编程启蒙
前端·javascript
月亮邮递员6169 小时前
Markdown语法总结
开发语言·前端·javascript
Kurisu57510 小时前
雾锁王国修改器下载2026最新
前端·修改器代码