wwqdrh

配置静态文件服务

apt-get install nginx

systemctl start nginx

systemctl enable nginx

配置静态文件映射

  • /usr/sbin/nginx:主程序
  • /etc/nginx:存放配置文件
  • /usr/share/nginx:存放静态文件
  • /var/log/nginx:存放日志

程序启动之后默认的文件路径在/var/www/html下面,所以把需要映射的文件直接放在这就行

如果要设置文件过期时间

expires 30s;
expires 30m;
expires 2h;
expires 30d;

配置basic auth

sh -c "echo -n 'wwqdrh:' >> /etc/nginx/.htpasswd"

sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

# 查看结果
cat /etc/nginx/.htpasswd

选择要授权的配置文件中,例如/etc/nginx/sites-enabled/default

auth_basic "Restricted Content";

auth_basic_user_file /etc/nginx/.htpasswd;

配置https

使用nginx -V查看是否有http_ssl_module模块(一般安装都会有)

启用 SSL Session 缓存可以大大减少 TLS 的反复验证,减少 TLS 握手的 roundtrip。
虽然 session 缓存会占用一定内存,但是用 1M 的内存就可以缓存 4000 个连接,可以说是非常非常划算的。(但是设置最好设置50m,1m太小了东西都加载不出来)

listen 443 ssl default_server;

listen [::]:443 ssl default_server;

ssl_certificate /opt/certs/zerossl-certs/certificate.crt;

ssl_certificate_key /opt/certs/zerossl-certs//private.key;

# ssl_session_cache为off或者none 这两种情况下 是不会启用ssl的session缓存功能的 
ssl_session_cache  shared:SSL:50m;

ssl_session_timeout  5m;

# 配置支持哪些加密方式,可以通过openssl查看`openssl -v`列出所有详细套件
ssl_ciphers  HIGH:!aNULL:!MD5;

# 设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件
ssl_prefer_server_ciphers  on;

想将http的流量重定向到https上,但是由于没有域名,只有ip,但是在nginx上不管使用$host还是$server_name都过不来,都只能是内网的ip,所以这个ip只能写死了

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        server_name _;

        # rewrite ^(.*) https://$server_name$1 permanent;
        return 301 https://43.142.26.74$request_uri;
}

配置限流与后端转发

ngx_http_limit_req_module模块通过漏桶原理来限制单位时间内的请求数,一旦单位时间内请求数超过限制,就会返回503错误

limit_req_zone $binary_remote_addr zone=selfcardreq:10m rate=100r/s; # 触发条件,所有访问ip 限制每秒10个请求
limit_conn_zone $binary_remote_addr zone=selfcardconn:10m; # 触发条件

server {
  listen 8000;
  server_name ~^(?<user>.+)\.selfcard\.com$;
  
  location / {
    limit_req zone=selfcardreq burst=5 nodelay;   # 执行的动作,通过zone名字对应
    limit_conn selfcardconn 100;    # 限制同一时间内1个连接,超出的连接返回503

    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 User $user;
    proxy_hide_header X-Application-Context;

    set $is_matched 0;
    if ($user != "") {
        set $is_matched 1;
        proxy_pass http://0.0.0.0:3000;
    }

    # 没有匹配到,跳转到默认页面
    if ($is_matched = 0) {
        return 301 http://www.selfcard.com:8000;
    }
  }
}