Nginx
Nginx
Nginx 配置文件的位置
Nginx 的主配置文件通常位于以下几个常见的路径之一,这取决于您的操作系统和 Nginx 安装方式:
- Debian/Ubuntu:
/etc/nginx/nginx.conf
和/etc/nginx/sites-available/
中的虚拟主机文件。 - CentOS/Red Hat:
/etc/nginx/nginx.conf
或/etc/nginx/conf.d/
中的虚拟主机文件。 MacOS/Homebrew:
/usr/local/etc/nginx/nginx.conf
反向代理配置
1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name site_url; 域名配置
location / {
proxy_pass http://localhost:port; 需要转发的端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
创建站点连接:
sudo ln -s /etc/nginx/sites-available/zh17.tech /etc/nginx/sites-enabled/zh17.tech
重启nginx:
sudo systemctl restart nginx
ws 请求 变成 wss 请求
WebSocket 请求在通过域名时变成了 wss://zh17.tech/gpt/queue/join
,而在直接使用 IP 地址时则是 ws://142.171.204.194:1234/gpt/queue/join
。这个问题通常与 Nginx 的配置有关。
以下是一些步骤和配置示例,帮助你解决这个问题:
1. Nginx 配置
确保你的 Nginx 配置正确处理 WebSocket 连接。以下是一个基本的 Nginx 配置示例,适用于 WebSocket:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name zh17.tech;
location / {
proxy_pass http://127.0.0.1:1234; # 将请求转发到你的 Python Web 服务
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_set_header X-Real-IP $remote_addr; # 设置真实 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 转发 IP
proxy_set_header X-Forwarded-Proto $scheme; # 转发协议
}
}
2. 确保使用 HTTPS
如果你希望使用 wss://
(安全的 WebSocket),则需要确保你的 Nginx 服务器配置了 SSL/TLS。你可以使用 Let’s Encrypt 免费获取 SSL 证书。配置 HTTPS 的示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 80;
server_name zh17.tech;
return 301 https://$host$request_uri; # 将所有 HTTP 请求重定向到 HTTPS
}
server {
listen 443 ssl;
server_name zh17.tech;
ssl_certificate /path/to/fullchain.pem; # SSL 证书路径
ssl_certificate_key /path/to/privkey.pem; # SSL 密钥路径
location / {
proxy_pass http://127.0.0.1:1234;
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;
}
}
nginx 转发 github pages
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
server{
listen 80;
server_name your.blog.com;
return 301 https://your.blog.com$request_uri;
}
server{
listen 443 ssl http2;
server_name your.blog.com;
ssl_certificate /opt/cert/sslfile.pem;
ssl_certificate_key /opt/cert/sslfile.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_redirect off;
proxy_set_header Host yourblog.github.io; # 填写 Github Pages 的地址。
proxy_set_header X-Host yourblog.github.io; # 填写 Github Pages 的地址。
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Cache pages.
proxy_cache_valid 200 206 304 301 302 1d; # 配置缓存过期时间。
proxy_cache_valid any 1d;
proxy_cache_key $uri;
proxy_pass https://yourblog.github.io; # 填写 Github Pages 的地址。
}
}
This post is licensed under CC BY 4.0 by the author.