Nginx配置文件说明

-- 重定向Nginx错误页面的方法 --

在nginx的配置文件中,可以对发生错误是的重定向页面进行配置,在nginx.conf文件中有下面的配置信息:

error_page 404  /404.html;

这个404.html保证在nginx主目录下的html目录中即可,如果需要在出现404错误后直接跳转到另外一个地址,可以直接设置如下:

error_page 404 http://www.***.com;

同样的方式可以定义常见的403、500等错误。

特别注意的是404.html文件页面大小要超过512k,不然会被ie浏览器替换为ie默认的错误页面。

-- Nginx状态监控配置 --

需要注意的是,Nginx默认安装不包含状态模块stub_status,所以,在编译Nginx的时候,需要添加以下参数:

--with-http_stub_status_module

一旦包含stub_status模块后,我们就可以在配置文件nginx.conf中开启状态页面:

http { server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } location /nginx-status { stub_status on; access_log off; } } }

以上配置文件中,我们实际增加的部分是:

location /nginx-status { stub_status on; access_log off; }

同样,假如Nginx所在服务器的IP为10.0.0.1,同时指向它的域名为www.domain.com,这样一来,Nginx的状态页面便是:

http://10.0.0.1/nginx-status

或者

http://www.domain.com/nginx-status

同样,建议您将以上示例中的nginx-status修改为其它字符串。

另外,Nginx的stub_status也支持授权IP的配置,您可以参考Nginx的手册,监控宝提供的服务监控点IP地址为:

60.195.252.106 60.195.249.83

-- Apache监控配置 --

修改httpd.conf

在添加Apache监控之前,我们需要开启Apache的status模块,以Apache2.x版本为例,我们需要修改httpd.conf,增加以下配置段:

ExtendedStatus On <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 60.195.252.106 Allow from 60.195.249.83 </Location>

这样一来,假如你的Apache所在服务器的域名和IP地址为

www.domain.com -> 10.0.0.1

那么,Apache的状态页面地址便为:

http://www.domain.com/server-status

或者

http://10.0.0.1/server-status

受限访问设置

我们当然不希望其它人浏览status页面,所以您可以做一些限制,首先,对于默认的status地址,您可以进行修改,比如将:

<Location /server-status>

修改为:

<Location /my-domain-status>

其次,您已经看到,我们提供了指定的授权IP地址:60.195.252.106、60.195.249.83,您可以仅授权这个地址访问您的status页面。

-- Nginx静态文件处理 --

通过正则表达式,我们可让 nginx 识别出各种静态文件,例如 images 路径下的所有请求可以写为:

location ~ ^/images/ {

root /opt/webapp/images;

}

而下面的配置则定义了几种文件类型的请求处理方式。

location ~ .(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {

root /opt/webapp;

expires 24h;

}

对于例如图片、静态 HTML 文件、js 脚本文件和 css 样式文件等,我们希望 Nginx 直接处理并返回给浏览器,这样可以大大的加快网页浏览时的速度。因此对于这类文件我们需要通过 root 指令来指定文件的存放路径,同时因为这类文件并不常修改,通过 expires 指令来控制其在浏览器的缓存,以减少不必要的请求。 expires 指令可以控制 HTTP 应答中的“ Expires ”和“ Cache-Control ”的头标(起到控制页面缓存的作用)。您可以使用例如以下的格式来书写 Expires:

expires 1 January, 1970, 00:00:01 GMT;

expires 60s;

expires 30m;

expires 24h;

expires 1d;

expires max;

expires off;

这样当你输入http://127.0.0.1/1.html的时候会自动跳转到:

/opt/webapp/1.html

expires 1 January, 1970, 00:00:01 GMT; expires 60s; expires 30m; expires 24h; expires 1d; expires max; expires off;

location ~ .(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ { root /opt/webapp; expires 24h; }

-- Nginx设置上传目录无执行权限 --

在windows+iis下,可以设置上传目录,类似:upload,uploadfile,attachments,这样的目录下面无脚本执行权限,从而防止非法用户上传脚本得到webshell

nginx上也很简单,我们使用location。。如下:

location ~ ^/upload/.*.(php|php5)$

{

deny all;

}

其中upload换为你要设置的目录名字

这条规则的含义是匹配请求连接中开头是/upload/,中间匹配任意字符,结尾匹配.php或者.php5的页面,最后利用deny all禁止访问,这样就防止了上传目录的脚本执行权限

禁止访问http://localhost/path/

location = /path/ {

return 404;

}

禁止访问http://localhost/test/test.php

location ^~ /test

{

deny all;

}

禁止访问某个(test)目录

location ~^/(test)/{

deny all;

}

--Nginx Rewrite设置 --

首先,Nginx可以用if进行条件匹配,语法规则类似C,举例如下:

if ($http_user_agent ~ MSIE) {

rewrite  ^(.*)$  /msie/$1  break;

}

1、正则表达式匹配,其中:

* ~  为区分大小写匹配

* ~* 为不区分大小写匹配

* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配

2、文件及目录匹配,其中:

* -f和!-f用来判断是否存在文件

* -d和!-d用来判断是否存在目录

* -e和!-e用来判断是否存在文件或目录

* -x和!-x用来判断文件是否可执行

如:

if (!-f $request_filename) {

proxy_pass  http://127.0.0.1;

}

其次,Nginx的Rewrite规则与Apache几乎完全一致,所不同的是最后的flag标记,举例如下:

rewrite ^/feed/$ http://feed.shunz.net last;

flag标记有:

* last 相当于Apache里的[L]标记,表示完成rewrite,不再匹配后面的规则

* break 与last类似

* redirect 返回302临时重定向

* permanent 返回301永久重定向

Wordpress的重定向规则:

if (!-e $request_filename) {

rewrite ^/(index|atom|rsd).xml$ http://feed.shunz.net last;

rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;

rewrite ^([_0-9a-zA-Z-]+)?(/.*.php)$ $2 last;

rewrite ^ /index.php last;

}

Discuz!的重定向规则:

if (!-f $request_filename) {

rewrite ^/archiver/((fid|tid)-[w-]+.html)$   /archiver/index.php?$1 last;

rewrite ^/forum-([0-9]+)-([0-9]+).html$   /forumdisplay.php?fid=$1&page=$2 last;

rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+).html$  /viewthread.php?tid=$1&extra=page=$3&page=$2 last;

rewrite ^/space-(username|uid)-(.+).html$   /space.php?$1=$2 last;

rewrite ^/tag-(.+).html$ /tag.php?name=$1 last;

}

-- Nginx防盗链处理 --

location /photos/ {

valid_referers none blocked www.mydomain.com mydomain.com;

if ($invalid_referer) {

return 403;

}

}

时间: 2024-10-18 15:02:17

Nginx配置文件说明的相关文章

linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)

linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表里 面找master进程,它的编号就是主进程号. ps -ef | grep nginx 查看进程 cat /usr/local/nginx/nginx.pid 每次修改完nginx文件都要重新加载配置文件linux命令: /usr/local/nginx -t //验证配置文件是否合法 若ngin

nginx配置文件详解

nginx配置文件nginx.conf超详细讲解 #nginx进程,一般设置为和cpu核数一样worker_processes 4;                        #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置user nginx       #进程pid存放位置pid        /application/nginx/nginx.pid; #Specifies the value

ansible管理nginx配置文件

#生产环境中大多时候是需要管理配置文件的,安装软件包只是在初始化环境的时候用一下.下面我们来写个管理nginx配置文件的playbook 一.创建相关目录 mkdir  -p /etc/ansible/nginx_config/roles/{new,old}/{files,handlers,vars,tasks} #其中new为更新时用到的,old为回滚时用到的,files下面为nginx.conf和vhosts目录,handlers为重启nginx服务的命令. #关于回滚,需要在执行playb

nginx 配置文件 PATHINFO重写规则

user  www www;worker_processes  2; #error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info; pid        logs/nginx.pid; events {    use epoll;    worker_connections  2048;} http {    include       mime.types;   

NGINX配置文件nginx.conf详解

1.配置文件结构 Nginx配置文件主要分成四部分:main(全局设置).server(主机设置).upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令.main部分设置的指令将影响其它所有部分的设置:server部分的指令主要用于指定虚拟主机域名.IP和端口:upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡:location部分用于匹配网页位置(比如,根目录"/"

ansible-管理nginx配置文件

背景:安装软件包,只是在初始化环境时用一下,大多时候需要修改配置文件:管理Nginx配置文件的playbook,执行playbook之前,一定要备份旧的配置:机器上的配置文件需和new/files保持一致 1. 创建目录和配置文件 说明:new为更新时用到,old为回滚时用到,即将new目录内容拷贝进来 mkdir -p /etc/anxible/nginx_config/roles/new/{files,handlers,vars,tasks} mkdir -p /etc/anxible/ng

配置使用vim编辑Nginx配置文件时语法高亮

vim是Unix系统中非常实用的文本编辑器,它和传统的vi相比最大的区别在于它所支持的配色方案,这个功能使得平时编辑一些配置文件或者是在写代码的时候极大的提高工作效率,如果我们在系统中有安装vim相应的包且开启了syntax配色方案的时候会不显示语法高亮往往是配置设置错误所引起的.一般配置错误有2个地方:1.是远程服务器的仿真客户终端配置错误:2.是服务器上环境变量配置错误.在这里就用SecureCRT仿真客户终端为例子简单的说一下vim开启syntax配色方案: 在SecureCRT上需要配置

【Nginx笔记】nginx配置文件具体解释

本文主要对nginx的配置做重点说明,关于nginx的其他基本概念.建议參考官网描写叙述.这里推荐Nginx Beginner's Guide这篇文档.对刚開始学习的人高速认识nginx非常有帮助. 显然.发挥nginx强大优势的前提是熟悉其配置文件并进行合理的配置.而学习nginx配置时.最重要的一点是建立例如以下概念: The most important is that nginx is a reverse proxy first and HTTP server second, its f

Nginx配置文件详细说明

Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户user www-data;    #启动进程,通常设置成和cpu的数量相等worker_processes  1; #全局错误日志及PID文件error_log  /var/log/nginx/error.log;pid        /var/run/nginx.pid; #工作模式及连接数上限events {    use   epoll;             #epoll是多路复用IO(I/O Mu

etcd+confd实现Nginx配置文件自动管理

一.需求 我们使用Nginx做七层负载均衡,后端是Tomcat.项目采用灰度发布方式,每次项目升级,都要手动先从Nginx下摘掉一组,然后再升级这组,当项目快速迭代时,手动做这些操作显然会增加部署时间,于是就想通过脚本实现自动化管理Nginx配置文件. 当时考虑自己写Shell脚本对Nginx配置文件操作,需要用到sed流编辑器,sed本身没有条件判断语句,并不能灵活判断配置文件中要添加/删除位置,因此会增加配置错误风险. 在查资料无意间发现confd能自动管理配置文件,通过模板渲染生成配置文件