連接埠配置教程
學習如何修改常見軟體的連接埠配置,掌握Docker連接埠映射技巧
常見軟體連接埠修改
Nginx 連接埠修改
修改 Nginx 監聽連接埠,避免與其他服務衝突
# 編輯 nginx.conf 文件
sudo nano /etc/nginx/nginx.conf
# 修改 listen 指令
server {
listen 8080; # 從默認的 80 改為 8080
listen [::]:8080;
server_name _;
# ... 其他配置
}
# 重啟 Nginx
sudo systemctl restart nginx
記得在防火牆中開放新連接埠:
sudo ufw allow 8080
Apache 連接埠修改
修改 Apache HTTP 伺服器的監聽連接埠
# 編輯連接埠配置文件
sudo nano /etc/apache2/ports.conf
# 修改 Listen 指令
Listen 8080 # 從默認的 80 改為 8080
# 編輯虛擬主機配置
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:8080>
# ... 其他配置
</VirtualHost>
# 重啟 Apache
sudo systemctl restart apache2
MySQL 連接埠修改
修改 MySQL 資料庫伺服器的監聽連接埠
# 編輯 MySQL 配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到並修改 port 配置
[mysqld]
port = 3307 # 從默認的 3306 改為 3307
bind-address = 127.0.0.1
# 重啟 MySQL 服務
sudo systemctl restart mysql
# 連接時指定新連接埠
mysql -u root -p -P 3307
SSH 連接埠修改
修改 SSH 服務連接埠,提高伺服器安全性
# 編輯 SSH 配置文件
sudo nano /etc/ssh/sshd_config
# 找到並修改 Port 配置
Port 2222 # 從默認的 22 改為 2222
# 重啟 SSH 服務
sudo systemctl restart sshd
# 使用新連接埠連接
ssh user@server -p 2222
⚠️ 修改前請確保防火牆已開放新連接埠,避免被鎖定在伺服器外
Node.js 應用連接埠配置
配置 Node.js 應用的監聽連接埠
# 在程式碼中設置連接埠
const port = process.env.PORT || 3001;
app.listen(port, () => {
console.log(`Server running on port $${port}`);
});
# 使用環境變數啟動
PORT=3001 node app.js
# 或在 package.json 中配置
{
"scripts": {
"start":"PORT=3001 node app.js",
"dev":"PORT=3001 nodemon app.js"
}
}
Docker 連接埠映射
學習 Docker 容器的連接埠映射配置
# 映射單個連接埠
docker run -p 8080:80 nginx
# 映射多個連接埠
docker run -p 8080:80 -p 8443:443 nginx
# Docker Compose 配置
version: '3.8'
services:
web:
image: nginx
ports:
-"8080:80" # 主機連接埠:容器連接埠
-"127.0.0.1:8081:80" # 綁定到特定IP
實用技巧和工具
連接埠佔用檢測
檢查連接埠是否被佔用的常用命令
# Linux/macOS 檢查連接埠佔用
netstat -tulpn | grep :8080
lsof -i :8080
ss -tulpn | grep :8080
# Windows 檢查連接埠佔用
netstat -ano | findstr :8080
Get-NetTCPConnection -LocalPort 8080
# 殺死佔用連接埠的進程
kill -9 $(lsof -t -i:8080) # Linux/macOS
taskkill /PID <PID> /F # Windows
防火牆連接埠開放
在不同作業系統中開放連接埠的方法
# Ubuntu/Debian (UFW)
sudo ufw allow 8080
sudo ufw allow 8080/tcp
sudo ufw allow from 192.168.1.0/24 to any port 8080
# CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
# iptables
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4
# 查看防火牆狀態
sudo ufw status
sudo firewall-cmd --list-all
連接埠轉發技術
使用不同工具進行連接埠轉發
# SSH 連接埠轉發
ssh -L 8080:localhost:80 user@remote-server
ssh -R 8080:localhost:80 user@remote-server # 反向轉發
# socat 連接埠轉發
socat TCP-LISTEN:8080,fork TCP:localhost:80
# nginx 反向代理
server {
listen 8080;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# netcat 連接埠轉發
mkfifo backpipe
nc -l 8080 0<backpipe | nc localhost 80 1>backpipe
開發環境連接埠管理
開發環境中的連接埠規劃和管理技巧
# 推薦的開發連接埠分配
3000-3099 # 前端開發伺服器
4000-4099 # 後端 API 服務
5000-5099 # Python/Flask 應用
8000-8099 # 通用 Web 服務
9000-9099 # 監控和工具
# 使用環境變數管理連接埠
# .env 文件示例
FRONTEND_PORT=3000
BACKEND_PORT=4000
DATABASE_PORT=5432
REDIS_PORT=6379
# docker-compose.yml 中使用環境變數
services:
frontend:
ports:
-"$${FRONTEND_PORT}:3000"
backend:
ports:
-"$${BACKEND_PORT}:4000"