原标题:被害妄想症该如何生存
先看配置:
| 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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | server {         listen 80 default_server;         listen [::]:80 default_server;         listen 443 ssl default_server;         root /usr/share/nginx/html;         ssl_certificate certs/default.pem;         ssl_certificate_key certs/default-nopass.key;         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;         ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;         ssl_prefer_server_ciphers on; } server { 	listen 443 ssl spdy; 	ssl_certificate certs/real-cert.pem; 	ssl_certificate_key certs/real-cert-nopass.key; 	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 	ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; 	ssl_prefer_server_ciphers on; 	root /usr/share/nginx/html; 	server_name example.com; 	location / {                 root /path/to/your/files;                 if (-d $request_filename) {                         return 404;                 } 		try_files $uri $uri/ =404; 		charset utf-8;  	}         location ~ .*/$ {                 root /path/to/your/files;                 access_by_lua '                         local coo = ngx.var.cookie_coo                         if coo ~= "coo" then                                 ngx.exit(404)                         end                 ';                 autoindex on;                 autoindex_exact_size off;         } } | 
假设:
审查机关拥有运营商级别的入侵检测设备(比如GFW)
说明:
- 全站使用https,关闭SSLv3,关闭弱加密组件
- default_server开启80端口,使用自签名证书;真实需要访问的域名(example.com)必须使用有效的证书,或者在本地信任根证书。注意example.com不能开启80端口,且与default_server使用的证书不能相同。不要使用泛域名证书。这是为了防止审查机关通过直连IP查看返回的证书中的Common Name来得到真实域名。这样配置之后,直连IP https://xxx.xxx.xxx.xxx默认是返回自签名证书,无法得到真实example.com。
- 选择性开启autoindex,通过cookie鉴别。注意也可以通过HTTP Basic Authenication认证。对匹配文件夹的uri(”/”结尾)做认证,示例中只有带cookie coo=coo的请求才会返回autoindex,否则返回404。
- 在location /中禁用目录末尾自动加斜杠,因为如果自动加斜杠,审查机关可以通过暴力猜测出服务器上有哪些目录确实存在(返回了301到末尾加/的url)。方法是if (-d $request_filename)返回404。


 有问题请留言。
有问题请留言。
