文献:
Windows
我用的版本号: nginx/Windows-1.20.1
1、解压后的文件夹:
2、进入到 conf 文件夹。我们的配置是 nginx.conf
3、添加如下的配置
3.1 配置代码:
upstream localhost_server{ server localhost:8096 ; server localhost:8095 ; } location / { proxy_pass http://localhost_server; }
4、双击 nginx.exe 文件
5、安装成功的话,在文件管理器中可以查到对应的进程
还可以访问你配置的地址:
6、按照步骤,恭喜你搭载好了
重新加载配置文件的命令
常用命令
- 重新加载配置文件 nginx -s reload
- 启动 Nginx 服务 nginx -c /etc/nginx/nginx.conf
- 查看 Nginx 的版本号:nginx -V
- 启动 Nginx:start nginx
- 快速停止或关闭 Nginx:nginx -s stop
- 正常停止或关闭 Nginx:nginx -s quit
- 杀死 Nginx 所有进程 taskkill /im nginx.exe /f
发布过程遇到问题集锦
1、每次更改 config 之后,需要 执行以下 reload 命令,但是我每次 reload 之后,在服务器中,nginx 访问是正常的,在本地机器上就不行。推荐你执行以下 杀死所有 nginx 进程之后,重新双击 nginx.exe 文件,最后再去执行 reload 命令
2、解决我当前遇到的问题:
当服务器中的程序池挂掉后,访问 iis 会报 503 的问题。
nginx 策略:轮询(默认)
max_fails=1
假设配置两个节点 A 和 B,手动把 B 节点关掉,则在 Nginx 轮询到 B 节点时,发现该节点不可用,会自动转去调 A 节点,而不会返回失败,也就是说,调用方并不会收到一次调用失败(一次都不会)。
upstream localhost_server{ server 127.0.0.1:8096 max_fails=1 ; server 127.0.0.1:8095 max_fails=1; } location / { proxy_pass http://localhost_server; proxy_next_upstream error timeout http_503 ; #如果你还有其他的问题,可以参考下面,多个用英文空格分开 }
//proxy_next_upstream 配置
proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...;
Default: proxy_next_upstream error timeout;
Context: http, server, location
指定应将请求传递到下一个服务器的情况:
error # 与服务器建立连接,向其传递请求或读取响应头时发生错误;
timeout # 在与服务器建立连接,向其传递请求或读取响应头时发生超时;
invalid_header # 服务器返回空的或无效的响应;
http_500 # 服务器返回代码为500的响应;
http_502 # 服务器返回代码为502的响应;
http_503 # 服务器返回代码为503的响应;
http_504 # 服务器返回代码504的响应;
http_403 # 服务器返回代码为403的响应;
http_404 # 服务器返回代码为404的响应;
http_429 # 服务器返回代码为429的响应(1.11.13);
non_idempotent # 通常,请求与 非幂等 方法(POST,LOCK,PATCH)不传递到请求是否已被发送到上游服务器(1.9.13)的下一个服务器; 启用此选项显式允许重试此类请求;
off # 禁用将请求传递给下一个服务器。
添加好配置后,再次访问就不会再有 503 的错误了
我停掉的 8095 已经不会访问了
3、添加日志
location /status { #访问位置为/status stub_status on; #打开状态统计功能 access_log off; #关闭此位置的日志记录 }
配置多个证书和域名
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream default_server{ server IP:PORT ; } server { listen 443 ssl; server_name xxx.com www.xxx.com; ssl_certificate url/xxx.com_bundle.pem; ssl_certificate_key url/xxx.com.key; ssl_protocols TLSv1.2 TLSv1.3; #以下三个配置,可以让你的域名在myssl的评分是A+ ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security "max-age=31536000"; location / { 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; proxy_pass http://default_server/; } } server { listen 443 ssl; server_name xxx.cn www.xxx.cn; ssl_certificate url/xxx.cn_bundle.pem; ssl_certificate_key url/xxx.cn.key; #以下三个配置,可以让你的域名在myssl的评分是A+ ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security "max-age=31536000"; location / { 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; proxy_pass http://default_server/; } } server { listen 80; server_name xxx.com www.xxx.com; rewrite ^/(.*)$ https://www.xxx.com/$1 permanent; } server { listen 80; server_name xxx.cn www.xxx.cn; rewrite ^/(.*)$ https://www.xxx.cn/$1 permanent; } }
配置外网访问服务器图片
访问路径:https://www.XXXX.com/图片名称
location ~ .*\.(gif|jpg|jpeg|png)$ { root /xxx/files/img/;#指定文件存放路径 }
配置外网访问服务器图片-url 指定
访问路径:https://www.XXX.com/img/图片名称
我的实际服务器路径是:/xxx/files/img/
为何下面的路径配置中,却没有/img
因为 ningx 反代的时候,会自动在/xxx/files/后面拼上 img
因此 location 后面的路由 务必是 你的实际文件路径
location /img/ { root /xxx/files/;#指定图片存放路径 }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于