# Nginx ## 常用命令 ```sh # 启动 Nginx 服务 sudo systemctl start nginx # 关闭 sudo systemctl stop nginx # 重启 sudo systemctl restart nginx # 重新加载 Nginx 以应用更改 sudo systemctl reload nginx # 默认目录 cd /var/www/ # 配置文件 cd /etc/nginx/ /etc/nginx/nginx.conf #测试 Nginx 配置是否正确 sudo nginx -t ``` ## 在 Ubuntu 22.04 上安装和配置 Nginx ### 安装 ```sh #首先,确保您的软件包索引是最新的: sudo apt update #步骤 2:安装 Nginx sudo apt install nginx #步骤 3:启动 Nginx 服务 sudo systemctl start nginx #步骤 4:使 Nginx 服务开机自启 sudo systemctl enable nginx #步骤 5:检查 Nginx 状态 sudo systemctl status nginx #步骤 6:配置防火墙 sudo ufw allow 'Nginx Full' ``` ### 配置ssh 常见的存放路径是 /etc/nginx/ssl/ ```sh sudo mkdir -p /etc/nginx/ssl sudo cp /path/to/your/example.com.crt /etc/nginx/ssl/ sudo cp /path/to/your/example.com.key /etc/nginx/ssl/ ``` ```sh server { listen 443 ssl; server_name api.zpc-xy.com; ssl_certificate /etc/nginx/ssl/api.zpc-xy.com_nginx/api.zpc-xy.com_bundle.crt; ssl_certificate_key ssl/api.zpc-xy.com_nginx/api.zpc-xy.com.key; # ssl_protocols TLSv1.2 TLSv1.3; # 仅使用 TLS 1.2 和 1.3 # ssl_ciphers HIGH:!aNULL:!MD5; # 配置强密码套件 # location / { # proxy_pass http://localhost:3000; # 例如,如果你有一个后端应用运行在端口3000 # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Forwarded-Proto $scheme; # } } ``` ### 配置文件 ```bash # 基础配置 server { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } } server { # 添加虚拟目录映射 location /output/ { # alias /disk/ai_sports/DataGateway/output/; # 或者使用 root 指令(视具体情况而定) root /disk/ai_sports/DataGateway/output/; # 可选配置:根据需要添加其他指令,如访问控制、缓存策略等 autoindex on; # 如果希望列出目录内容 # expires 30d; # 设置静态资源缓存过期时间 # try_files $uri $uri/ =404; # 用于处理目录索引和文件不存在的情况 } } # 代理转发 server { listen 82 default_server; listen [::]:82 default_server; #root /var/www/web; # Add index.php to the list if you are using PHP #index index.html index.htm index.nginx-debian.html; server_name _; location / { proxy_pass http://192.168.195.32:8189; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } # 代理转发,允许websocket server { listen 82 default_server; listen [::]:82 default_server; #root /var/www/web; # Add index.php to the list if you are using PHP #index index.html index.htm index.nginx-debian.html; server_name _; location / { proxy_pass http://192.168.195.32:8189; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ### 添加跨域 server { listen 83 default_server; listen [::]:83 default_server; #root /var/www/web; # Add index.php to the list if you are using PHP #index index.html index.htm index.nginx-debian.html; server_name _; location / { proxy_pass http://192.168.195.32:9967; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # 添加自定义标头 # 添加 CORS 标头 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT'; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization'; # 如果需要处理 OPTIONS 请求 if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT'; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Length' 0; add_header 'Content-Type' 'text/plain charset=UTF-8'; return 204; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` # 安装支持 ngx_stream 模块的 Nginx 版本: ```sh sudo apt update sudo apt install nginx-full # 更新配置以启用 stream 模块: nginx.conf 文件中添加 stream { upstream rdp_backend { server windows_server_ip:3389; } server { listen 3389; # 监听的端口,可以根据需要修改 proxy_pass rdp_backend; } } ## 进阶选项 nginx.conf 文件中添加 stream { include /etc/nginx/stream.d/*.conf; # 确保 stream 块包含 conf.d 目录中的配置文件 } #/etc/nginx/stream.d/rdp.conf upstream rdp_backend { server 192.168.195.4:3389; # 将此 IP 替换为你的 Windows 服务器 IP } server { listen 89; # Nginx 监听的端口,可以根据需要修改 proxy_pass rdp_backend; } ```