nginx是什么
Nginx(engine x)是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。
起初主要供俄国大型的门户网站及搜索引擎Rambler使用,因此同样的服务器配置下,nginx会比apache有着更优的性能、更高的并发量。目前各大企业,包括腾讯、京东、淘宝在内均已开始使用nginx作为web服务器。
HTTP基本认证模块
当我们有了一些静态文件或者静态页面,但是又不想使用一些动态脚本来控制他们的的访问权限,毕竟动态脚本会影响到访问速度,这时候便可以仅仅依靠nginx来完成http的基本认证。
需在nginx的配置文件中加入如下配置来达到控制权限的目的,可以指定到某个目录,也可以进行一些正则匹配,也可以直接整个域名控制权限。1
2auth_basic "secret";
auth_basic_user_file /path/to/passwd.db;
在这之前,还需设置可登录的用户名及密码,这时候需要用到htpasswd
这个工具,另外也可以使用openssl
,本文使用htpasswd
生成用户名密码文件。1
htpasswd -c passwd.db yms
然后输入密码,再次确认密码。
执行以下命令平滑重启nginx服务:1
service nginx reload
登录你的网站,这时候会返回405错误,并且提示你需要输入帐号及密码才可访问。
反向代理
只需要配置好路径,及对应的反向代理路径即可,如下面命令所示:1
2
3
4location ^~ /api
{
proxy_pass http://192.168.0.1;
}
nginx解决跨域问题
部分图片可能跨域无法访问,因此需要在图片服务器进行配置,对图片目录增加允许跨域:1
add_header Access-Control-Allow-Origin *;
nginx负载均衡
1 | upstream phpserver { |
1 | add_header X_Cache "$upstream_cache_status from $server_addr"; |