安装

* windows下:直接到官网下载windows下的稳定版本,解压到任意位置即可
* Linux下:一种方式是yum或者sudo apt-get install 另一种是源码编译安装,先安装pcre、zlib库文件在./configure、make、make install

启动

* 正常启动:安装路径/sbin/nginx
* 开机启动:centos5.x/6.x下可以自定义nginx启动脚本放在/etc/init.d/下,再chmod 755 /etc/init.d/nginx,chkconfig nginx on 即可

虚拟主机配置

基于IP、域名、PORT。链接:http://www.cnblogs.com/weblm/p/5537749.html

域名跳转

有时候我们有多个域名,希望通过一个域名跳转到另外一个,这个在nginx里是一个常用的设置,
  server_name  test.com  www.test.com;

    if ($host != 'www.test.com' ) {
rewrite ^/(.*)$ http:/www.test.com/$1 permanent;
}

屏蔽恶意USER_AGENT

编辑conf/vhosts/test.conf文件,添加:
#禁止Scrapy等工具的抓取,注意已经取消curl抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
#禁止恶意user_agent访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}

用户认证

用户认证需要用到Apache的htpasswd工具,没有安装Apache的话可直接yum install -y httpd
生成密码文件,创建用户
    htpasswd -c /usr/local/nginx/conf/.htpasswd  test // 添加test用户,第一次添加时需要加-c参数,第二次添加时不需要-c参数

在nginx的配置文件中添加
    location  / {#可以指定目录
root /data/www/;
auth_basic "Auth";
auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
}

访问控制

限制只让某个ip访问
```
allow 219.232.244.234;
deny all;
```
禁止某个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;
检测配置是否正确:/usr/local/nginx/sbin/nginx -t
重启一下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;
```
有时候会根据目录来限制php解析:
    location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.php$
{
deny all;
}

防盗链

在 nginx.conf中的server部分中添加如下代码
    location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
valid_referers none blocked server_names *.taobao.com *.baidu.com *.google.com *.google.cn *.soso.com ; // 对这些域名的网站不进行盗链。
if ($invalid_referer) {
# return 403;
rewrite ^/ http://www.example.com/nophoto.gif;
}
}

说明:如果前面配置中已经加了:

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
access_log off;
}

那么会和这一部分重复,这时候上面的生效,所以,我们需要把两者合在一起。如下:

    location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$  {
expires 30d;
valid_referers none blocked server_names *.taobao.com *.baidu.com *.google.com *.google.cn *.soso.com ; // 对这些域名的网站不进行盗链。
if ($invalid_referer) {
#return 403;
rewrite ^/ http://www.example.com/nophoto.gif;
}
access_log off;
}

配置静态文件缓存

 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
access_log off;
} location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}

伪静态

if ($host ~* www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ http://$host_without_www$1 permanent;
}

自定义访问/错误日志

日志格式

log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; log_format main1 '$proxy_add_x_forwarded_for - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"'; //此日志格式为,ip不仅记录代理的ip还记录远程客户端真实IP。

错误日志error_log日志级别

error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit, 该级别在日志名后边定义格式如下:

error_log /your/path/error.log crit;

crit 记录的日志最少,而debug记录的日志最多。如果你的nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富。

日志切割

编写脚本:

vim /usr/local/sbin/logqiege.sh //加入

#!/bin/bash
datedirs=`date +%Y%m%d`
/bin/mkdir /home/logs/$datedirs >/dev/null 2>&1
/bin/mv /home/logs/*.log /home/logs/$datedirs
/bin/kill -HUP `cat /var/run/nginx.pid`

Nginx配置(全)的更多相关文章

  1. goDaddy SSL证书 Nginx配置全流程 (转)

    好长时间没动过这玩意了,今天突然用到,忘的一干二净.在此做个笔记吧! 一.购买Godaddy SSL证书 1.打开Godaddy官网 http://www.godaddy.com/: 2.点击网站导航 ...

  2. nginx配置默认首页(index.htnl index.htm)全流程(包含遇到问题的解决)

    需求: 自己有个域名,原来直接扔在了服务器的文件夹里(根据客服人员指导),自己玩了一遍nginx的安装部署等操作之后,域名的指向发生了改变,到了nginx成功的界面. 自己抱着极大的好奇心来配置ngi ...

  3. Nginx配置详细解析(全)

    一.nginx.conf文件结构 (1)共三部分:由全局块.events块.http块组成.http块又包含http全局块.server块:server块由多个location块组成. (2)一般情况 ...

  4. 史上最全的Nginx配置文档

    Nginx是一个异步框架的Web服务器,也可以用作反向代理,负载平衡器 和 HTTP缓存.该软件由Igor Sysoev 创建,并于2004年首次公开发布.同名公司成立于2011年,以提供支持.Ngi ...

  5. nginx配置入门

    谢谢作者的分享精神,原文地址:http://www.nginx.cn/591.html nginx配置入门 之前的nginx配置是对nginx配置文件的具体含义进行讲解,不过对于nginx的新手可能一 ...

  6. nginx配置学习文章

    partOne 自我释义部分 我的是阿里云的ubuntu *******实际上感觉这里是基本配置,很用不到*********#定义其用户或用户组user www-data;#nginx的进程数,应当为 ...

  7. nginx 配置入门

    之前的nginx配置是对nginx配置文件的具体含义进行讲解,不过对于nginx的新手可能一头雾水. 今天看到个文档不错,翻译过来分享给大家,可以让新手更详细地了解nginx配置,可以说是nginx配 ...

  8. SSL数字证书Nginx配置部署

    由于小程序和Ios端的需要,公司的项目需要从原来的http协议扩展到https协议,因为项目本来就有采用nginx做了负载均衡,但是之前配置nginx的时候并没有配置关于https的内容,所以需要做这 ...

  9. nginx配置ssl证书实现https访问

    一,环境说明 服务器系统:ubuntu16.04LTS 服务器IP地址:47.89.12.99 域名:bjubi.com 二,域名解析到服务器 在阿里云控制台-产品与服务-云解析DNS-找到需要解析的 ...

随机推荐

  1. SQL server学习

    慕课网sql server学习 数据库第一印象:desktop--web server--database server** 几大数据库:sql server.oracle database.DB2. ...

  2. 基于TCP的网络编程

    HTTP协议,FTP协议等很多广泛应用的协议均基于TCP协议.TCP编程主要为C/S模式,客户端和服务器之间的程序设计存在较大差异. TCP编程框图 服务器调用socket().bind().list ...

  3. jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)

    1. 设置浏览器安全属性,启用[通过域访问数据源]选项,如图:

  4. 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting

    一.序言   陆陆续续的如果累计起来,我估计至少有二十来位左右的朋友加我QQ,向我咨询有关抠图方面的算法,可惜的是,我对这方面之前一直是没有研究过的.除了利用和Photoshop中的魔棒一样的技术或者 ...

  5. Linux下安装jdk1.7、Apache-tomcat7

    首先说明下我的主机环境:主机:32位win7 虚拟机:VMware Workstation10.0.1 linux:红帽子centos6.4 jdk1.7 Apache-tomcat7 java环境需 ...

  6. Linux系统下输出某进程内存占用信息的c程序实现

    在实际工作中有时需要程序打印出某个进程的内存占用情况以作参考, 下面介绍一种通过Linux下的伪文件系统/proc 计算某进程内存占用的程序实现方法. 首先, 为什么会有所谓的 伪文件 呢. Linu ...

  7. git --help出来的命令 + eclipse里用git小记

    用法:git [--version] [--help] [-C <path>] [-c name=value]           [--exec-path[=<path>]] ...

  8. [LeetCode] Reorder List 链表重排序

    Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do th ...

  9. SQLite3源程序分析之查询处理及优化

    前言 查询处理及优化是关系数据库得以流行的根本原因,也是关系数据库系统最核心的技术之一.SQLite的查询处理模块很精致,而且很容易移植到不支持SQL的存储引擎(Berkeley DB最新的版本已经将 ...

  10. NCspider项目总结

    下午就要答辩了,想把项目经历再总结一下. 项目分三个阶段. 第一阶段,是信息搜集整理阶段 要想法设法从各个门户网站上抓取到新闻和对应的评论数据.首先要分析网站结构. 1. 从哪里找到网站每日发布的所有 ...