windows下使用nginx

通过官网下载Nginx,将其解压。在命令行内输入./nginx.exe即可启动。

image-20200814195306631

image-20200814195331140

基础代理配置

如果启动的nginx进程过多,可能会导致代理不生效!

通过taskkill /IM nginx.exe /F命令可以清除所有nginx进程。

  1. 通过include server/*.conf实现为单独一个站点设置配置文件

    1
    2
    3
    http{
    include server/*.conf
    }

    image-20200814195736125

    此配置代表将server文件下的所有conf文件导入。

  2. 最简单的代理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    server{
    listen 80;
    server_name test.com;
    location /{
    proxy_pass http://127.0.0.1:8888;
    # 修改代理头为请求的地址
    proxy_set_header Host $host;
    }
    }

    以上配置表示 当访问test.com时会映射到本地8888端口。$host表示请求的地址。

代理缓存

1
2
3
4
5
6
7
8
9
10
11
12
proxy_cache_path cache levels=1:2 keys_zone=my_cache:10m;
server{
listen 80;
server_name test.com;
location / {
proxy_pass http://127.0.0.1:8888;
# 修改代理头为请求的地址
proxy_set_header Host $host;
# 设置缓存(名字与上方对应)
proxy_cache my_cache;
}
}

可以使用Vary对不同请求头设置缓存。

HTTPS

image-20200815083641945

证书生成命令:

1
openssl req -x509 -newkey rsa:2048 -nodes -sha256 -keyout localhost-privkey.pem -out localhost-cert.pem
  • 通过nginx部署https服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server{
listen ssl;
server_name test.com;

ssl on;
ssl_certificate_key ../certs/localhost-privkey.pem;
ssl_certificate ../certs/localhost-cert.pem;

location / {
proxy_pass http://127.0.0.1:8888;
# 修改代理头为请求的地址
proxy_set_header Host $host;
}
}

其中将证书放到了根目录下certs文件夹下。

  • 访问自动跳转https

    1
    2
    3
    4
    5
    6
    server{
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name test.com;
    return 302 https://$server_name$request_url;
    }

HTTP2的优势

  • 信道复用

  • 分帧传输

  • Server Push

    HTTP1.1中

    image-20200815090204244

    HTTP2中

    image-20200815090355014

通过nginx设置HTTP2

1
2
3
4
server{
listen ssl http2;
http2_push_preload on;
}

http2必须在https的基础上开启。