文献:
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/;#指定图片存放路径
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于