当nginx服务器被这样configuration时:
server { listen 80; listen 443 ssl; server_name www.example.org; ... }
如何通过HTTP或HTTPS检测到请求?
(例如$http_port不可用,因为端口没有明确指定,因此它是空的)
http://nginx.org/en/docs/http/ngx_http_core_module.html#variables
- $ https – 如果连接以SSL模式运行,则为“on”,否则为空string
- $ scheme – 请求scheme,“http”或“https”
例如,如果您想要将某个位置限制为https,且仅限于:
location /admin { if ($https = "") { return 404; } # ... and so on }
为什么不把它们分离到自己的服务器指令中,并为每个服务器上下文指定一个日志:
服务器{
听80;
server_name www.nginx.org;
log_format gzip'$ remote_addr - $ remote_user [$ time_local]'
'“$ request”$ status $ bytes_sent“
'“$ http_referer”“$ http_user_agent”“$ gzip_ratio”';
access_log /spool/logs/nginx-access.log gzip buffer = 32k;
error_log /var/log/nginx/nginx-error.log错误;
}
服务器{
听443 default_server ssl;
server_name secure.nginx.org;
log_format gzip'$ remote_addr - $ remote_user [$ time_local]'
'“$ request”$ status $ bytes_sent“
'“$ http_referer”“$ http_user_agent”“$ gzip_ratio”';
access_log /var/log/nginx/nginx_ssl-access.log gzip buffer = 32k;
error_log /var/log/nginx/nginx_ssl-error.log错误;
}
然后,您可以分别查看每个日志,以查看访问或错误来自哪里。