文献:
nginx官网:nginx: download
英文文档:nginx documentation
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
问题整理
问题一
每次更改config之后,需要 执行以下 reload 命令,但是我每次reload之后,在服务器中,nginx 访问是正常的,在本地机器上就不行。推荐你执行以下 杀死所有nginx进程之后,重新双击 nginx.exe 文件,最后再去执行reload命令
问题二
当服务器中的程序池挂掉后,访问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已经不会访问了
添加日志
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/;#指定图片存放路径
}
评论区