windows下使用nginx

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

image-20200814195306631

image-20200814195331140

基础代理配置

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

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

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

    http{
        include server/*.conf
    }

    image-20200814195736125

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

  2. 最简单的代理

    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表示请求的地址。

代理缓存

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

证书生成命令:

openssl req -x509 -newkey rsa:2048 -nodes -sha256 -keyout localhost-privkey.pem -out localhost-cert.pem
  • 通过nginx部署https服务
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

    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

server{
    listen        ssl http2;
    http2_push_preload on;
}

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