- alias
- server {
- listen 80;
- server_name www.xxxpc.NET ~^www\.site\d+\.net$;
- error_page 500 502 503 504 404 /50x.html;
- location /about {
- alias /data/nginx/pc/HTML;
- index index.HTML;
- }
- location /host.pass {
- deny all;
- }
- }
当访问 www.xxxpc.NET/about 的时候, 会直接跳转访问 / data/nginx/pc/HTML/index.HTML 这个资源
location 的详细使用
uri: 资源定位; 当访问 http://www.xxxpc.net/about/index.html 时, uri 为 / about/index.HTML
url:url 是包含协议的; http://www.xxxpc.net/about/index.html 这整个就是一个 url
- = #用于标准 uri 前, 需要请求字串与 uri 精确匹配, 如果匹配成功就停止向下匹配并立即处理请求.
- ~ #用于标准 uri 前, 表示包含正则表达式并且区分大小写
- !~ #用于标准 uri 前, 表示包含正则表达式并且区分大小写不匹配
- ~* #用于标准 uri 前, 表示包含正则表达式并且不区分大写
- !~* #用于标准 uri 前, 表示包含正则表达式并且不区分大小写不匹配
- ^~ #用于标准 uri 前, 表示包含正则表达式并且匹配以什么开头
- $ #用于标准 uri 前, 表示包含正则表达式并且匹配以什么结尾
- \ #用于标准 uri 前, 表示包含正则表达式并且转义字符. 可以转. * ? 等
- * #用于标准 uri 前, 表示包含正则表达式并且代表任意长度的任意字符
"=" 精确匹配的应用
- server {
- listen 80;
- server_name www.xxxpc.NET ~^www\.site\d+\.net$;
- location = / {
- root /data/nginx/pc/HTML;
- index index.HTML;
- }
- }
一般都在根下做一个完全匹配, 如果匹配的是根就不向下搜索了
"~" 匹配区分大小写的应用
- location ~ /A.?\.jpg{
- root /data/nginx/pc/images;
- index index.HTML;
- }
区分大小写, 前面 A 必须是大写 A, 后面的.? 匹配单个字符可以是随机, 后面的 jpg 必须是小写的 jpg
"~*" 匹配不区分大小写的应用
- location ~*/A.?\.jpg{
- root /data/nginx/pc/images;
- index index.HTML;
- }
不区分大小写, 前面的 A 可以是大写也可以是小写, 后面的 jpg 可以是小写也可以是大写
文件名后缀匹配应用
- location ~* \.(gif|jpg|jpeg|bmp|PNG|tiff|tif|ico|wmf|JS)$ {
- root /data/nginx/pc/images;
- index index.HTML;
- }
不区分大小写, 并且访问上面指定的后缀名的资源都到指定的根路径中去寻找
匹配的优先级
location 优先级:(location =)> (location 完整路径)> (location ^~ 路径)> (location ~,~* 正则顺序)> (location 部分起始路径)> (/)
其中 location 完整路径指的是:
- location /images {
- root /data/nginx/pc; #在 / data/nginx/pc 下有 images 目录, 则就是完整路径
- idnex index.HTML;
- }
实现访问控制
- location /images {
- root /data/nginx/pc;
- index index.HTML;
- allow 192.168.38.1;
- deny 192.168.38.0/24(deny all;);
- }
执行顺序是从上往下, 先执行 allow 允许一部分人访问指定资源, 然后 deny 拒绝一些人访问
Nginx 账户认证功能
- [[email protected] conf.d]# yum install httpd-tools -y #安装工具, 生成认证文件
- [[email protected] conf.d]# htpasswd -bc /apps/nginx/conf/.htpasswd user1 123456 #-b 是使用命令行的密码, 不适用默认;-c 创建文件; 默认是 md5 加密
- [[email protected] conf.d]# htpasswd -b /apps/nginx/conf/.htpasswd user2 123456 #第二次不需要加 - c, 如果第二次添加 - c, 则会把生成的文件覆盖
- location /login {
- root /data/nginx/pc/HTML;
- index index.HTML;
- auth_basic "input password"; #提示信息
- auth_basic_user_file /apps/nginx/conf/.htpasswd; #指定账户认证文件的路径
- }
经过账户认证登录后, 才可以看到 / data/nginx/pc/HTML/login / 下面的默认站点主页面; 一般用于内部人员调试或者查询时使用
自定义错误页面
- server {
- listen 80;
- server_name www.xxxpc.NET ~^www\.site\d+\.net$;
- error_page 500 502 503 504 404 /error.HTML; #当 Nginx 捕获到这些状态码时, 会调用 error.HTML 所定义的错误页面
- location = /error.HTML { #定义错误页面的指定位置
- root /data/nginx/pc/HTML;
- }
- }
可以每个域名定义一个错误页面
自定义访问日志和错误日志
- server {
- listen 80;
- server_name www.xxxpc.NET ~^www\.site\d+\.net$;
- access_log /var/log/nginx/www.xxxpc.NET-access.log main; #指定生成日志的路径和访问日志名字, 并且指定访问日志的格式
- error_log /var/log/nginx/www.xxxpc.NET-error.log; #指定错误日志的日志名和路径
- location /login {
- root /data/nginx/pc/HTML;
- index index.HTML;
- access_log /var/log/nginx/www.xxxpc.NET-login_access.log main;
- error_log /var/log/nginx/www.xxxpc.NET-login_error.log; #自定义访问日志和错误日志可以设置到某个 location 中
- }
- }
每个域名可以单独定义访问和错误日志; server 中有自定义的日志, 则以 server 为准; 如果 server 中没有, 则以 http 中的日志格式为准
来源: http://www.bubuko.com/infodetail-3333266.html