下载安装:docker pull nginx
构建容器:docker run --name nginx -p 80:80 -d nginx
添加值网络:docker network connect my_network nginx
进入容器:docker exec -it nginx /bin/bash
编辑配置文件:vi /etc/nginx/nginx.conf——————》 "遇到command not found"---》liunx---yum install vi 手动分割 dockers ---apt-get update更新 apt-get install vim 安装
server {
listen 80;
server_name your_domain.com; # 替换为您的域名或 IP 地址
location / {
root /var/www/html; # 替换为前端应用的路径
index index.html;
}
}
按下 Esc 键 输入 :wq
重启nginx -s reload
宏观构造:
Nginx配置文件的结构,包括全局块、events块、http块,以及http块内部的server块和location块
以下几个层级模块(按优先级从高到低):
- 全局块:配置影响整个 Nginx 进程的全局参数(如用户、工作进程数)。
events块:配置网络连接处理模型(如最大连接数)。http块:所有 HTTP 相关的配置(包括反向代理、缓存、日志等)。server块:定义虚拟主机(如域名、端口)。location块:处理特定请求路径的规则(如/api或/websocket)。
# 全局块
user nginx;
worker_processes auto;
# events 块
events {
worker_connections 1024;
}
# http 块
http {
# 全局 HTTP 配置(如日志格式、MIME 类型)
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
# server 块(虚拟主机)
server {
listen 80;
server_name example.com;
# location 块(普通 HTTP 请求)
location / {
proxy_pass http://backend:8080;
}
# location 块(WebSocket 请求)
location /websocket/ {
proxy_pass http://backend:8080/;
# WebSocket 专属配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
HTTP 与 WebSocket 的配置区别
- 典型场景:代理 REST API、静态文件等。
location / { proxy_pass http://backend:8080; # 后端服务地址 proxy_set_header Host $host; # 传递域名 proxy_set_header X-Real-IP $remote_addr; # 传递客户端 IP }
- 核心需求:支持协议升级(从 HTTP 到 WebSocket)。
Upgrade和Connection头:触发 WebSocket 协议升级。proxy_http_version 1.1:WebSocket 需要 HTTP/1.1 支持。
location /websocket/ {
proxy_pass http://backend:8080/;
proxy_http_version 1.1; # 必须使用 HTTP/1.1
proxy_set_header Upgrade $http_upgrade; # 协议升级头
proxy_set_header Connection "upgrade"; # 保持长连接
proxy_set_header Host $host;
proxy_read_timeout 3600s; # 长连接超时时间
}
- THE END -
最后修改:2025年3月22日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://jiaheming.cn/2025/03/nginx/

共有 0 条评论