# 在 Windows 系统下使用 nginx

# 软件获取

有 2 种方式去获得 nginx 程序,一个是使用 nginx 官方的程序;另一个是使用 OpenResty;

OpenResty:通过 Lua 扩展 NGINX 实现的可伸缩的 Web 平台

如果没有额外的需求,可以直接使用原版的 nginx;简单使用的情况下,这两者并无本质区别;

# nginx 原版

# OpenResty


# 常用命令行

以下演示没有配置环境变量的情况下,如何去使用命令;首先需要进入到 nginx.exe 的根目录下

如果已经配置了环境变量,可以简化命令,不需要再携带 .exe;且无需先定位到 nginx.exe 的根目录下;

# 检查配置文件

在启动 nginx 程序前,建议先使用检查配置文件的命令,检查下配置文件是否正确;如果配置文件存在错误,则无法正常启动 nginx;

nginx.exe -t
1

使用上面的命令,检查配置文件的正确性;如果返回下面的输出,说明配置文件正常;可以进行后续的操作;

nginx: the configuration file ./conf/nginx.conf syntax is ok
nginx: configuration file ./conf/nginx.conf test is successful
1
2

# 启动程序

start nginx.exe 
1

使用上面的命令,cmd 窗口不会一直处于执行中,可以继续进行其他命令的操作

如果直接键入 nginx.exe ,在会卡住 cmd 命令行;

# 关闭程序

nginx.exe -s quit
1

使用上面的命令,nginx 会有序且完整地关闭;所谓 “优雅关闭”;

nginx.exe -s stop
1

stop 会直接关闭掉 nginx;可能并不会保存相关的信息;

# 重启程序

nginx.exe -s reload
1

使用上面的命令,会重启 nginx 程序;


# 常用的一些配置

# 配置为 web files browser

D:\Files\Path目录下的文件,通过 HTTP 服务暴露出来;通过浏览器访问,可以直接下载文件;快速搭建起一个文件服务器,实现快速分享文件;

# Simple HTTP Server
server {
    listen       20927;
    server_name  localhost;

    location / {
        root   D:\Files\Path; 
        autoindex on; # 自动索引
        autoindex_exact_size off; # 显示文件大小
        autoindex_localtime on; # 显示文件创建时间
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

如果只是想简单地、暂时性地分享文件,还可以考虑使用其他方法:

# 反向代理

# 本地 8080 的反向代理
server {
    listen       18080;
    server_name  localhost;

    location / {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:8080;
        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;
        client_max_body_size 1024M; # 最大允许上传 1024 MB 的文件
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 开启 https

注意 cert 证书的位置;证书的位置要配置正确,否则无法启动 nginx;

# 8080 反向代理的地址 https 模式
server {
    listen       18081 ssl http2; # https 并不一定要运行在 443 端口
    server_name  yourdomain;

    # 以下为 ssl 配置
    ssl_certificate ./cert/yourdomain.cer;
    ssl_certificate_key ./cert/yourdomain.key;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 4h;
    add_header Strict-Transport-Security "max-age=31536000"; # HSTS 设置

    # 配置 gzip 压缩;以下配置块可选
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    # 以反向代理的配置为例
    location / {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:8080;
        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;
        client_max_body_size 1024M;
    }
}
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
33
34
35