目前遇到一个应用场景,当localtion / 中的proxy_pass(本地缓存)失败后,nginx会到@pass中去。在myupstream.lua脚本中,根据shared_dict中的回源主机lua_upstream_host和ssl标志,选择proxy_pass http://或proxy_pass https://。
1. lua-nginx-module是否有proxy_set_header、proxy_ssl_server_name、proxy_ssl_trusted_certificate、proxy_pass等等这些api;
2. 下面的配置中,我用这种if实现是否可行?
location @pass {
set $lua_upstream_host '';
set $lua_upstream_ssl '';
#获取回源地址以及ssl版本信息
access_by_lua_file 'myupstream.lua’;
if ( $lua_upstream_ssl = '' ) #http回源
{
proxy_set_header Via $new_via;
proxy_set_header X-Forwarded-For $new_x_forwarded_for;
proxy_http_version 1.1;
proxy_pass http://$lua_upstream_host;
}
if ( $lua_upstream_ssl )#https回源
{
proxy_set_header Via $new_via;
proxy_set_header X-Forwarded-For $new_x_forwarded_for;
proxy_set_header Host $host_field_to_origin;
proxy_ssl_session_reuse off;
proxy_ssl_server_name on;
proxy_ssl_name www.coursera.org;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate cert.pem;
proxy_ssl_verify_depth 16;
proxy_pass https://myserver;
}
}