添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
listen 443 ssl http2; server_name weargallery.app wg.chenhe.me wg.chenhe.cc; root /www/wwwroot/weargallery; if ($host != 'weargallery.app') { rewrite ^/(.*)$ https://weargallery.app/$1 permanent;

SNI 动态选择证书

一个 vhost 绑定多个域名,且都开启 https。虽然 SAN 证书可以包含多个主机名,但如果域名本身就不同就没办法了。

利用 SNI,可以指示 Nginx 根据客户端请求的域名来使用对应的证书。

注意,在 ssl_certificate ssl_certificate_key 属性中使用变量,需要存放密钥的文件夹有遍历权限 (x),只有读写的话会报 Permission Denied.

我们约定证书的名称为域名。

server
    listen 443 ssl http2;
    server_name weargallery.app wg.chenhe.me wg.chenhe.cc;
    ssl_certificate /www/cert/$ssl_server_name.cert;
    ssl_certificate_key /www/cert/$ssl_server_name.key;

$ssl_server_name 是 Nginx 内置变量,实际值就是客户端请求的域名。例如 'weargallery.app', 'wg.chenhe.cc'.

也可以手动指定每个域名对应哪个证书。

map $ssl_server_name $ssl_cert {
    default /www/cert/weargallery.app.cert; # 默认证书
    wg.chenhe.cc /www/cert/cc.cert;
  	wg.chenhe.me /www/cert/me.cert;
map $ssl_server_name $ssl_key {  } # 同理
ssl_certificate $ssl_cert;
ssl_certificate_key $ssl_key;

robots.txt

有时不方便以文件形式添加 robots.txt,例如一个反向代理服务。那么就可以用 Nginx 直接实现:

location = /robots.txt {
  default_type text/html;
  add_header Content-Type "text/plain; charset=UTF-8";
  return 200 "User-Agent: *\nDisallow: /";

常用内置变量

Example

Nginx Cookbook

本文记录 Nginx 常见需求的配置实现,用作备忘录。没有什么技术含量。 AND / OR Nginx 不支持常见的逻辑运算符 &&, || 等,这种需求只能通过添加一个变量来实现。 AND set $flag ""; if (<condition1>) { set $flag "${fla