一、用户认证

用户认证功能是利用Apache的工具htpasswd生成的密钥,所以需要安装Apache的这个工具即可,我们用yum来安装就可以。

[root@localhost ~]# yum install -y httpd

[root@localhost ~]# htpasswd -c /usr/local/nginx/conf/.htpasswd test

New password:

Re-type new password:    ##创建第二个账户密码,不需要-c

Adding password for user mydiscuz

[root@localhost ~]# cat /usr/local/nginx/conf/.htpasswd

mydiscuz:$apr1$ejPLa15T$kuyykf8at2I77oogZ0kUz1

修改配置,主要是修改server模块

location ~ .*admin\.php$ {

auth_basic "testlinux auth";

auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

}

[root@localhost ~]#/usr/local/nginx/sbin/nginx -t   检查

[root@localhost ~]# service nginx reload   重新加载

二、域名重定向(域名跳转)

cd /usr/local/nginx/conf/vhosts/--> vim test.conf插入

server

{

listen 80;

server_name www.test.com www.aaa.com www.bbb.com;

if ($host   !=   'www.test.com')

{

rewrite   ^/(.*)$   http://www.test.com/$1   permanent;

}

index index.html index.htm index.php;

root /data/www;

location ~ .*admin\.php$ {

以下无改动

2. /usr/local/nginx/sbin/nginx -t  检查。 /usr/local/nginx/sbin/nginx -s reload 重新加载

3.在C:\Windows\System32\drivers\etc找到hosts用文本打开在

# localhost name resolution is handled within DNS itself.

#        127.0.0.1       localhost

#        ::1             localhost

192.168.52.120  www.test.com  www.aaa.com  www.222.com  www.bbb.com

三、静态文件缓存与不记录指定文件日志

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

access_log off;

}

location ~ .*\.(js|css)?$

{

expires      12h;

access_log off;

}

四、防盗链

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$

#针对这些文件进行防盗链配置

{

access_log off;

expires 15d;

valid_referers none blocked  *.test.com *.aaa.com *.bbb.com;  #只允许这几个域名

if ($invalid_referer)

{

return 403;

#       rewrite ^/ http://www.example.com/nophoto.gif;   ##可以跳转到某图片

}

}

/usr/local/nginx/sbin/nginx  -t  检验   /usr/local/nginx/sbin/nginx -s  reload  重启

五、设置日志记录的内容

1. vim /usr/local/nginx/conf/nginx.conf  做出如下更改

http

{

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 3526;

server_names_hash_max_size 4096;

log_format test  '$remote_addr $http_x_forwarded_for [$time_local]'

'$host "$request_uri" $status'

'"$http_referer" "$http_user_agent"';

sendfile on;

2.vim test.conf配置文件

index index.html index.htm index.php;

root /data/www;

access_log /tmp/access.log test;   自定义地址及名字最好是比较大的一个磁盘下面

六 、日志切割

因为Nginx没有自动切割日志功能,所以需要手动编辑脚本

1.脚本实现

#vim  /usr/local/sbin/nginx_log.sh

nginx日志按日期自动切割脚本如下:

#!/bin/bash

d=`date -d "-1 day" +%F`                                                    #定义切割脚本的格式

[ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log           #检查此目录,如果没有就新建

mv /tmp/access.log /tmp/nginx_log/$d.log              #移动切割后的日志到新的目录下

/etc/init.d/nginx reload > /dev/null

cd /tmp/nginx_log/

gzip -f $d.log                             #压缩切割后的额脚本

2.定时工作

在crontab中设置作业

#crontab -e

0 0 * * * bash /usr/local/sbin/nginx_log.sh

七、访问控制

1. 限制只让某个ip访问

allow          219.232.244.234;

deny           all;

2.禁止某个IP或者IP段访问站点的设置方法

首先建立下面的配置文件放在nginx的conf目录下面,命名为deny.ip

cat  deny.ip

deny 192.168.1.11;

deny 192.168.1.123;

deny 10.0.1.0/24;

在nginx的配置文件nginx.conf中加入:

include deny.ip;

重启一下nginx的服务:/usr/local/nginx/sbin/nginx  reload 就可以生效了。

deny.ip 的格式中也可以用deny all;

如果你想实现这样的应用,除了几个IP外,其他全部拒绝,

那需要你在deny.ip 中这样写

allow 1.1.1.1;

allow 1.1.1.2;

deny all;

3.有时候会根据目录来限制php解析:

location ~ .*(diy|template|attachments|forumdata|attachment|image|admin)/.*\.php$

{

allow 127.0.0.1;

deny all;

}

八、使用 user_agent 控制客户端访问 

location /

{

if ($http_user_agent ~ 'bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315'){

return 403;

}

}

九、Nginx代理

1.绑定多个地址:yum install bind*先安装-->dig www.baidu.com  查询到多个地址

#cd    /usr/local/nginx/conf/vhosts

#vim  proxy.conf  编辑如下:

upstream test{

server  61.135.169.125:80;

server  61.135.169.121:80;

}

server {

listen 80;

server_name www.baidu.com;

location / {

proxy_pass http://test/;

proxy_set_header Host $host;

}

}

2.绑定一个地址:可通过ping  www.baidu.com 获得。如果无需vim  /etc/hosts删除百度相关一行,重新ping

server {

listen 80;

server_name www.baidu.com;

location / {

proxy_pass http://61.135.169.121/;

#proxy_set_header Host $host;

}

}

3.用 curl -x127.0.0.1:80 www.baidu.com 测试正常,代理访问完成

本文转自super李导51CTO博客,原文链接: http://blog.51cto.com/superleedo/1890336,如需转载请自行联系原作者

nginx 高级配置示例.相关推荐

  1. nginx 结合php 实现高级配置详解

    内容概要: 一. nginx.conf vim /usr/local/nginx/conf/nginx.conf //清空原来的配置,加入如下内容: user nobody nobody; worke ...

  2. nginx服务器带宽_Nginx限制带宽配置示例

    示例一: http { limit_rate 25k;                              #每个连接的速度限制 limit_zone to_vhost $server_name ...

  3. Nginx配置示例文件

    Nginx配置示例文件 nginx.conf worker_processes 8;events {worker_connections 1024; }http {include mime.types ...

  4. Nginx跨域解决配置示例

    简介 在日常学习和工作开发中,需要请求两个不同配置的请求经常存在,本文介绍如果还使用Nginx配置解决其跨域问题 相关理论 首先需要了解什么是跨域,下面的两个文章说的很好,请仔细阅读后,然后自己去动手 ...

  5. nginx 配置示例_Nginx位置指令示例

    nginx 配置示例 The location directive within NGINX server block allows to route request to correct locat ...

  6. Tomcat高级配置(应用场景总结及示例)

    前言 本文将解决以下问题: 如何将Linux下任意位置的项目(虚拟目录)部署到tomcat? 如何将项目部署到服务器特定端口? 如何在一个服务器上部署多个web应用? 本例中 系统:Linux ver ...

  7. Nginx 配置示例

    文章目录 Nginx主配置文件调优 Nginx HTTP跳转HTTPS Nginx代理PHP服务 Nginx作为代理服务器 Nginx作为负载均衡服务器 Nginx作为静态文件服务器 Nginx反向代 ...

  8. Nginx《四》——NginxNginx 高级配置

    Nginx<一>--I/O模型以及web服务介绍 Nginx<二>--Nginx基础服务介绍以及编译安装.配置 Nginx<三>--Nginx基础配置介绍 Ngin ...

  9. nginx的工作原理与nginx的配置

    1.nginx的工作原理 nginx的模块直接被编译进nginx,因此属于静态编译方式. 启动nginx后,nginx的模块被自动加载,与Apache不一样,首先将模块编译为一个so文件,然后在配置文 ...

最新文章

  1. 人工智能为人们减肥操碎了心
  2. 内存错误 处理 [CAlayer release]
  3. v-show 与 v-if 的区别
  4. 怎么查看一个网站是用什么语言编写的?
  5. 浏览器显示无法解析服务器的DNS地址,使用搜狗浏览器时突然弹出无法解析服务器的DNS地址该如何处理...
  6. P3402-[模板]可持久化并查集【主席树】
  7. 二叉树的层序遍历和前中后序遍历代码 迭代/递归
  8. 即时通信(IM)和实时通信(RTC)的区别
  9. Spark 机器学习 —— 从决策树到随机森林
  10. 无代码编程的兴起:借助无代码平台,无需编写任何基础代码即可开发软件
  11. Android 最常用的设计模式二 安卓Rxjava源码分析—观察者模式Observer(有实例)
  12. iOS 开发者证书打包项目未包含最新的UDID
  13. bbed修改表记录内容系列三
  14. 看设计师大牛如何将用户体验与建站融会贯通
  15. 【ESP32】arduino中的ESP32实时系统FreeRTOS使用教程(一)
  16. Linux常用命令详解文库
  17. 一分钟带你解读光纤收发器,秒懂(一)
  18. 怎么知道自己适合做什么?
  19. RailWay免费容器托管平台
  20. 【外汇天眼】MT4 vs MT5:哪个更适合外汇初学者

热门文章

  1. truncate表后恢复方法总结
  2. 三星 android recovery,三星N9006(GALAXY Note 3 公开版 Android5.0)刷Recovery教程
  3. MySQL : Incorrect string value: '\xE5\x9B\xBD\xE5\xBA\x86' for column 'stu_name' at row 1
  4. 【ZZULIOJ】1091: 童年生活二三事(多实例测试)
  5. vmware安装vsp
  6. 云客Drupal源码分析之实体视图显示及格式化器
  7. bert模型可以做文本主题识别吗_NLP之文本分类:「Tf-Idf、Word2Vec和BERT」三种模型比较...
  8. Linux磁盘分区论文3000字,磁盘分区对齐详解与配置 – Linux篇
  9. 电脑复制替换目标中覆盖的文件如何恢复?EasyRecovery15
  10. drf jwt 认证