優考試局域網考試系統內網域名與HTTPS配置指南¶
前言¶
本文檔旨在指導在純內網環境中,如何獨立部署本地域名解析,并實現通過域名訪問優考試獨立部署版,包括去除端口號訪問,以及在擁有正式域名的前提下配置 HTTPS 訪問。適用于需要在局域網內部署服務,并希望優化訪問體驗(如統一域名、HTTPS 加密)的用戶。
為什么需要這個配置?¶
-
使用域名訪問的目的: 讓優考試頁面通過易記的域名(如
yks.hz.com
、ks.abc.com
)訪問,而不是輸入繁瑣的 IP 地址和端口號; 方便內部團隊統一管理和訪問各類本地服務 -
使用HTTPS訪問的目的: 優考試支持攝像頭監考、攝像頭抓拍、錄音回答問答題等功能,這些功能需要使用 HTTPS 訪問才能正常使用;HTTPS 可以有效防止中間人攻擊,保障數據傳輸的安全性;在局域網中,HTTPS 也能有效防止數據被監聽或篡改;部分瀏覽器對未加密的 HTTP 服務會標記為"不安全",影響用戶體驗;
閱讀指南¶
根據您的需求選擇對應章節閱讀:
第一章:配置本地域名訪問¶
在本章中,我們將介紹如何在局域網內配置本地域名訪問優考試獨立部署版。我們將使用 Pi-hole 來實現本地域名解析。實現局域網內任意設備訪問 自定義域名(如http://ks.hz.com
),就能打開你本地優考試服務,無需加端口號!
1.1 準備工作¶
有兩種方式:
- 購買在線域名解析到內網ip即可
- 通過Pi-hole配置本地域名, 例如
ks.hz.com
這里我們使用第二種方式,Pi-hole 是一個開源的 DNS 服務器和廣告攔截器,可以在局域網內實現本地域名解析。 首先需要準備一臺linux的服務器,作為DHCP的服務器,安裝Pi-hole并配置本地域名,啟用DHCP服務來代替路由器的DHCP服務,實現在局域網內的所有電腦都能夠使用域名訪問優考試獨立部署版
下面是通過Pi-hole配置本地域名的教程 (需要在聯網環境下配置)
1.2 目錄結構設計(推薦)¶
在你的 Linux 系統中,推薦將所有配置文件集中放在一個地方,方便管理和備份。 推薦放在你的用戶目錄下:
mkdir -p ~/docker/pihole
~/docker/pihole/
├── etc-pihole/ # Pi-hole 數據掛載目錄
├── etc-dnsmasq.d/ # Pi-hole 的 DNS 配置文件目錄
└── .env # Pi-hole 啟動參數配置文件
1.3 安裝前準備¶
1. 保證系統已安裝 Docker¶
運行下面命令驗證是否安裝:
docker -v
Docker version 24.0.2
,說明已經安裝。
如果沒有安裝 Docker,請先運行以下命令安裝(以 Ubuntu 為例):
sudo apt update sudo apt install -y docker.io sudo systemctl enable docker sudo systemctl start docker
1.4 創建目錄結構¶
在終端中按如下步驟操作:
mkdir -p ~/docker/pihole/etc-pihole
mkdir -p ~/docker/pihole/etc-dnsmasq.d
cd ~/docker/pihole
1.5 創建 .env
配置文件¶
這個文件保存了 Pi-hole 容器的所有環境變量和端口配置。
vi .env
# 時區
TZ=Asia/Shanghai
# Web 管理頁面端口(默認是80,這里改為8081,防止與系統服務沖突)
WEB_PORT=8081
# DNS 服務端口(默認是53)
DNS_PORT=53
# 登錄密碼(可以自定義)
PIHOLE_PASSWORD=admin123
# 宿主機訪問容器內服務的“虛擬主機名”,默認保持不變
VIRTUAL_HOST=pi.hole
保存并退出:按下冒號下方出現:
后→輸入wq
再按下回車進行保存
1.6 運行 Docker 容器¶
在 ~/docker/pihole
目錄下運行以下命令:
docker run -d \
--name pihole \
-p ${WEB_PORT:-8081}:80 \
-p ${DNS_PORT:-53}:53/tcp \
-p ${DNS_PORT:-53}:53/udp \
-p 67:67/udp \
-e TZ="${TZ:-Asia/Shanghai}" \
-e WEBPASSWORD="${PIHOLE_PASSWORD:-admin123}" \
-v "$(pwd)/etc-pihole/:/etc/pihole/" \
-v "$(pwd)/etc-dnsmasq.d/:/etc/dnsmasq.d/" \
--dns=127.0.0.1 \
--dns=1.1.1.1 \
--restart=unless-stopped \
--hostname pi.hole \
--cap-add=NET_ADMIN \
pihole/pihole:latest
-p 67:67/udp
:此端口是 DHCP 需要的,必須映射。
- --cap-add=NET_ADMIN
:給容器添加網絡管理權限,開啟 DHCP 必須。
- --restart=unless-stopped
:確保容器隨系統啟動。
執行成功后,你可以運行:
docker logs -f pihole
Pi-hole blocking is enabled
就說明啟動成功!
1.7 訪問管理界面¶
瀏覽器打開:
http://<你的宿主機IP>:8081/admin
http://192.168.1.100:8081/admin
登錄密碼是 .env
文件中設置的 admin123
。
1.8 配置 Pi-hole 自帶 DHCP Server¶
重要提醒:一定要先關閉你路由器中的 DHCP 服務!
1. 進入 Web 管理后臺¶
瀏覽器訪問 http://<IP>:8081/admin
,登錄。
2. 啟用 DHCP 服務¶
點擊左側 Settings → 選擇上方標簽 DHCP
? 勾選:Enable DHCP server
填寫如下:
- Range Start:192.168.1.100
- Range End:192.168.1.150
- Router (Gateway):192.168.1.1(你的原路由器網關)
點擊 Save
3. 重啟容器¶
docker restart pihole
1.9 設置固定 IP¶
注意:Pi-hole 宿主機的 IP 地址必須是固定的(靜態 IP),否則 DHCP 和 DNS 服務將無法正常工作!
1. 查看當前網卡名稱¶
打開終端,輸入:
ip a
找到你正在使用的網卡,比如常見的是 eth0
、ens33
、ens160
、enp3s0
等。
記下你的網卡名,比如這里假設是 ens33
。
2. 備份當前配置¶
在修改前,建議先備份 Netplan 配置文件:
sudo cp /etc/netplan/*.yaml ~/netplan-backup.yaml
3. 編輯 Netplan 配置文件¶
通常配置文件在 /etc/netplan/
目錄下,比如叫 01-netcfg.yaml
或 50-cloud-init.yaml
。
編輯它:
sudo nano /etc/netplan/01-netcfg.yaml
(如果沒有這個文件,列一下目錄 ls /etc/netplan/
看實際名字。)
4. 修改內容為靜態 IP 配置¶
示例(你根據自己實際 IP 修改):
network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.10/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 192.168.1.10 # Pi-hole 本機 IP
- 8.8.8.8 # 備用 DNS,可選
說明:
-
ens33
:你的網卡名。 -
192.168.1.10/24
:你的 Pi-hole 宿主機固定 IP,/24
是子網掩碼255.255.255.0
。 -
gateway4: 192.168.1.1
:你的原路由器 IP。 -
nameservers
:首選是自己(Pi-hole),備用是公網 DNS(如 Google DNS 8.8.8.8)。
5. 應用配置¶
保存并退出編輯器后,應用新配置:
sudo netplan apply
6. 驗證 IP 是否生效¶
確認 IP 地址已經變成你設定的靜態 IP:
ip a
7. 特殊情況:舊版 Ubuntu(比如 16.04)¶
如果你的 Ubuntu 是 16.04 或更早版本,使用的是 /etc/network/interfaces
,配置方式如下:
編輯:
sudo nano /etc/network/interfaces
auto ens33
iface ens33 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.10 8.8.8.8
sudo systemctl restart networking
sudo reboot
完成以上步驟后,宿主機 IP 就是固定的了,不會隨著重啟、重連變化,從而確保:
- Pi-hole DHCP 服務器廣播正確
- DNS 服務正常指向 Pi-hole
- 整個局域網聯網穩定
1.10 驗證 DHCP 是否工作¶
讓某臺設備斷開 Wi-Fi 后重新連接。
然后查看它的 IP:
- IP 是否在你設置的范圍內?如 192.168.1.110
- DNS 是否指向了你的 Pi-hole IP?
1.11 常見問題與解決辦法¶
問題 | 可能原因 | 解決方法 |
---|---|---|
頁面打不開 | 端口被防火墻攔截 | 放行端口 8081 和 53 |
DNS 不生效 | 沒有設置設備或路由器 DNS | 指定 Pi-hole IP 作為 DNS |
DHCP 無效 | 路由器 DHCP 沒關閉 | 確保只啟用一個 DHCP |
密碼忘了 | 登錄失敗 | 用命令 docker exec -it pihole pihole -a -p 重置密碼 |
1.12 配置自定義域名¶
1. 添加本地域名解析¶
打開 Web → Local DNS Records → 添加:
這里填入的域名是訪問優考試局域網的域名,這里填入的IP是優考試服務器的IP
- Domain:
<域名>
,如ks.hz.com
- IP:
<IP>
,如192.168.1.10
,是安裝優考試的電腦的 IP 地址
點擊添加后保存。保存之后局域網的電腦就可以通過hppt://<域名>:<端口>去訪問優考試的服務了, 例如:http://ks.hz.com:5858
第二章:配置域名無端口訪問¶
之前的配置是通過 http://<域名>:5858
訪問優考試服務,下面我們將介紹如何配置 Nginx 反向代理,讓局域網內任意設備訪問 http://<域名>
,就能打開你本地 Windows 上的優考試服務(實際跑在 5858
端口),無需加端口號!, 例如:http://ks.hz.com
2.1 配置目標¶
局域網中任意設備訪問 http://<域名>
,就能打開你本地 Windows 上的優考試服務(實際跑在 5858
端口),無需加端口號!
2.2 系統前提¶
- Windows電腦已安裝優考試服務,運行在
http://localhost:5858
- 局域網內已部署 Pi-hole 并將
<域名>
解析到你的本機 IP(如192.168.0.1
)
2.3 實現思路¶
- 在安裝了優考試獨立部署版的Windows上,下載并安裝 Nginx (需要在聯網環境下配置)
- 配置 Nginx 監聽 80 端口,自動轉發到 5858 端口
- 啟動 Nginx,讓它自動接管域名請求
- 配合 Pi-hole 已設置的 DNS 解析,讓局域網內訪問
<域名>
就跳到你 Windows 服務上
2.1 下載并安裝 Nginx¶
推薦安裝路徑¶
建議目錄結構如下:
C:\
└── nginx\
├── conf\
├── html\
├── logs\
└── nginx.exe ...
nginx/1.24.0
)Windows 版本

.zip
壓縮包,解壓到你想安裝的位置,推薦為:
C:\nginx
2.2 配置 Nginx 實現反向代理¶
步驟 2.1:修改配置文件¶
打開這個文件:
C:\nginx\conf\nginx.conf
server
段,將其替換為以下配置:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name <域名>;
location / {
proxy_pass http://127.0.0.1:5858/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
2.3 啟動 Nginx¶
步驟 3.1:啟動方式¶
打開命令行(Win + R → 輸入 cmd
):
cd C:\nginx
start nginx
nginx -s reload
如果要關閉 Nginx:¶
nginx -s stop
nginx.exe
進程
2.4 Windows 防火墻設置(僅第一次)¶
確保 Windows 沒有攔截 Nginx 的 80 端口訪問:
1. 打開控制面板 → 系統與安全 → Windows Defender 防火墻 → “允許應用通過防火墻”
2. 添加 nginx.exe
到允許的應用中
3. 或手動開放 TCP 80 端口
2.5 測試效果¶
在瀏覽器中訪問:
http://<域名>

2.6 設置Nginx開機自啟動和關閉Windows的IIS服務¶
為了避免電腦重啟后,Windows的IIS服務搶占80端口,導致Nginx無法啟動,可以設置Nginx的開機自啟動和禁用Windows的IIS服務
禁用IIS服務¶
1.Win + R 輸入 services.msc
2.找到【IIS】服務名叫:World Wide Web Publishing Service
3.右鍵停止,然后重新找到這個服務右鍵屬性設置為禁用
設置Nginx開機自啟動¶
-
先準備一下 確認你的 Nginx 主程序路徑,比如你的 nginx.exe 應該在:
記住這個路徑。C:\Users\HZ\Desktop\nginx-1.26.3\nginx.exe
-
打開計劃任務管理器
- Win + R 輸入
taskschd.msc
,回車 -
打開 任務計劃程序 (Task Scheduler)
-
新建任務
- 點右側 創建任務 (不是創建基本任務!!)
- 在 常規 選項卡:
- 名稱 :隨便起,比如叫
Nginx Autostart
- 安全選項 :勾上
使用最高權限運行
-
配置為 :選擇你的 Windows 版本(一般選 Windows 10 或 Windows 11)
-
設置觸發器
- 點擊上方的“觸發器”→ 新建 :
- 開始任務 :選擇
登錄時
-
用戶:默認即可(就是你的當前賬號)
-
設置操作
- 點擊上方的“操作”→ 新建 :
- 操作 :
啟動程序
-
程序或腳本 :填你的 Nginx 路徑,比如:
(注意不要有錯,復制完整路徑)C:\Users\HZ\Desktop\nginx-1.26.3\nginx.exe
-
完成并保存 點確定,然后系統會讓你輸入一下當前用戶的密碼(因為要以管理員身份運行)。
保存好以后,開機自動就啟動 Nginx了 !
注意事項總結¶
項目 | 說明 |
---|---|
服務地址 | 你必須確認優考試服務始終運行在 localhost:5858 |
DNS 解析 | Pi-hole 已將 <域名> ? 192.168.0.1 |
Nginx 必須監聽本地 IP | 默認就可以,80 端口無需修改 |
防火墻問題 | 需允許 Nginx 通信,或關閉防火墻測試 |
多服務時 | 可為不同域名設置多個 server 塊,例如 exam.yks 、file.yks 等 |
如果無法訪問https,訪問http跳轉到IIS頁面 | 可能是80端口被IIS服務占用了,導致Nginx沒有啟動 |
最終效果¶
- 瀏覽器訪問:
http://<域名>
- 實際后端跳轉:
http://localhost:5858
- 用戶無需知道端口號,體驗更像正式網站
第三章:配置HTTPS訪問¶
為了實現攝像頭監考、問答題錄音上傳、手機也能攝像頭監考等功能,我們需要配置 HTTPS 訪問優考試獨立部署版。通過正式域名配置HTTPS來實現這些功能。 在本章中,我們將介紹如何在局域網內配置 HTTPS 訪問優考試獨立部署版。我們將使用 Let's Encrypt 來獲取免費的 SSL 證書。
3.1 配置目標¶
實現攝像頭監控和問答題錄音上傳功能,避免使用霸屏模塊進入考試。通過正式域名配置HTTPS來實現這些功能。
3.2 前期準備¶
在開始之前,你需要確保以下幾點:
- 在Windows上安裝好了優考試服務,可以訪問優考試獨立部署版
- 一個有效的域名(例如:
example.com
) - 該域名的 DNS 配置已經設置,并且指向你的服務器的 IP 地址
- 準備使用 Let's Encrypt 獲取和安裝 SSL 證書
- Nginx 已安裝并正在運行,且已經配置好優考試應用
3.3 配置步驟¶
3.2 安裝 win-acme 工具¶
Let's Encrypt 是一個免費的證書頒發機構,可以通過 win-acme 工具在 Windows 環境中方便地生成 SSL 證書。
1. 下載并安裝¶
- 訪問 win-acme官網
- 點擊右上角的 Download 下載最新版本(zip格式)
- 解壓下載的文件到任意目錄
2. 運行工具¶
- 進入解壓后的目錄
- 以管理員身份運行
wacs.exe
3.3 獲取 SSL 證書¶
1. 域名配置¶
- 選擇選項
2: Manual input
- 輸入你的域名,如:
example.com
2. 驗證方式選擇¶
- 選擇選項
6: [dns] Create verification records manually
- 這種方式適用于內網環境,不需要公網訪問
3. 證書保存格式¶
- 選擇選項
2: PEM encoded files
- 這種格式適用于 Nginx 等常見 Web 服務器
4. 證書安全設置¶
- 私鑰密碼保護:選擇
1: None
(除非有特殊安全需求) - IIS 綁定:選擇
3: No (additional) installation steps
5. 域名所有權驗證¶
- 同意 Let's Encrypt 服務條款(輸入
y
) - 按提示添加 DNS TXT 記錄
- 等待驗證完成
- 驗證完成后可以刪除 TXT 記錄(輸入
y
)
6. 證書文件獲取¶
完成后,將在指定目錄生成以下文件:
- example.com-crt.pem
:證書文件
- example.com-key.pem
:私鑰文件
- chain.pem
:證書鏈文件
這些文件將在后續配置 Nginx HTTPS 時使用。
3.4 配置 Nginx 使用 SSL¶
1. 修改 Nginx 配置文件:¶
打開 Nginx 配置文件(例如:example.com.conf
),并按照以下示例配置 HTTPS 和證書路徑:
# HTTP -> HTTPS 重定向
server {
listen 80;
server_name example.com;
# 重定向到 HTTPS
return 301 https://$host$request_uri;
}
# HTTPS 配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate cert/example.com-crt.pem; # 證書文件
ssl_certificate_key cert/example.com-key.pem; # 私鑰文件
ssl_trusted_certificate cert/chain.pem; # 鏈證書
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:5858; # 根據你的實際端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
2. 重新加載 Nginx 配置:¶
完成配置后,重啟 Nginx 使配置生效:
nginx -s reload
nginx -s stop
nginx
3.5 配置 HTTP 到 HTTPS 的自動重定向¶
為了確保所有訪問都通過 HTTPS,你可以在 Nginx 配置中添加 HTTP 到 HTTPS 的重定向。
server {
listen 80;
server_name example.com;
# 自動跳轉到 HTTPS
return 301 https://$host$request_uri;
}
http://example.com
的請求會自動跳轉到 https://example.com
。

3.6 常見問題與解決辦法¶
1. 證書無法通過驗證:¶
- 如果使用 HTTP 驗證,確保你的網站能夠從外網訪問,并且
/.well-known/acme-challenge/
路徑能正確訪問。 - 如果使用 DNS 驗證,確保 DNS 記錄已經正確添加并傳播。
2. 瀏覽器提示“不安全”:¶
- 確保證書已正確安裝,并且在 Nginx 配置中引用了正確的證書路徑。
- 如果證書是自簽名的,瀏覽器會顯示“不安全”警告。你需要使用 Let's Encrypt 等正式證書來避免此問題。
3. 證書續期失敗:¶
- 使用
win-acme
工具時,確保 DNS 記錄正確設置,并且驗證過程可以順利完成。如果你使用了 DNS 驗證,記得檢查 DNS 記錄是否過期。
4. 證書鏈問題:¶
- 確保在 Nginx 配置中正確引用了鏈證書(
ssl_trusted_certificate
)。如果鏈證書丟失,瀏覽器可能無法識別證書的有效性。
常見問題排查¶
常見問題排查(FAQ)¶
Q1: 為什么服務器上可以訪問服務,但其他電腦打不開?
A: 請確認以下幾點:
- 服務器是否正確運行,并監聽了局域網 IP(例如
0.0.0.0
或實際的內網 IP),而不是僅綁定127.0.0.1
。 - 防火墻是否放行了對應端口(如 80、443、8888 等)。
- 其他電腦是否處于同一局域網,并能 ping 通服務器 IP。
Q2: 為什么電腦上可以打開,但手機打不開?
A: 請檢查以下內容: - 手機是否連接的是相同的 Wi-Fi 網絡(與電腦/服務器處于同一網段)。 - Pi-hole 是否配置了正確的 DNS,手機的 DNS 設置是否指向 Pi-hole。 - 手機是否緩存了舊的 DNS 記錄,可嘗試重啟手機或清空 DNS 緩存。
Q3: 使用攝像頭時報錯“無法訪問”,是不是因為沒有啟用 HTTPS?
A: 是的,一些瀏覽器或前端框架在調用攝像頭、麥克風、位置信息等敏感權限時**強制要求使用 HTTPS** 。請使用有效的 HTTPS 證書(推薦通過 Let’s Encrypt 申請)來訪問相關服務。或者使用系統自帶的霸屏進入考試,這樣也可以使用攝像頭和麥克風。
Q4: 不同網段的設備之間無法訪問怎么辦?
A:
局域網中不同網段(例如 192.168.1.x
與 10.0.50.x
)之間的訪問,通常需要路由器支持跨網段通信,或者配置靜態路由。建議:
- 將所有設備盡量保持在同一網段。
- 如確實需要跨網段訪問,請在網關或路由器中配置路由規則。