标签归档:nginx

nginx一些正确的配置来自官网

一些nginx的配置怎么样的才算好呢

权限777 还是很不安全的  如果能不用 777 最好还是不用吧

下面看这两段代码

如果是多目录最好把root写在一条配置上

 

下面也是

还是把重复的index提出来吧

………….

下面来看下if   。本人以前用if做判断域名 结果发现效率蛮低的。如果可以的话在配置中 不要用if

见网上好多教程 –都在域名 那里做判断 结果呢代码是少写了很多行效率真不敢恭维

 

可以换成以下的

禁访问一些请求request也可以换成try_files

GOOD:

————————

这里的fastcgi_param 最好用$document_root 不要直接用路径

 

nginx如果网站存在默认的root根目录  升级的话会root会被 清空的哦

rewrite的时候 写上http://

如果可以不用正则 就不要用在nginx.conf中

BAD:

 

GOOD:

 

BETTER:

 

反向代理

Proxy一般我们都是这样配置的

 

下面两个是官方给推荐的

 

php中ini找到以下参数改为 cgi.fix_pathinfo=0

centos7安装lnmp/nginx1.95 php7 mariadb10 2015最新教程

nginx1.95的安装

php7的安装

mariadb20的安装

如果都安装好后下面来整合

 

——————————————

systemctl 管理systemd启动

systemd启动nginx的安装

http://www.nmfox.com/2015/10/30/448.html

systemd启动php7的安装

http://www.nmfox.com/2015/11/04/468.html

systemd启动mariadb20 二进制的安装

http://www.nmfox.com/2015/11/10/479.html

 

linux-centos7中nginx1.9.5安装nginx1.9.5编译安装教程systemctl控制启动关闭

网上没有nginx1.9.5安装教程所以就做一个。现在nginx很火 来试下这个web服务器吧本文为nmfox.com原创转载请注明出处

 

先安装gcc 等

.然后装一些库

 

.进入默认的软件目录

下载 nginx软件 nginx1.9.5软件包也是蛮小的下载不用很长时间

然后解压文件.

进入 nginx1.9.5的源码目录

 

创建一个nginx目录用来存放运行的临时文件夹

 

然后开始configure

接着make

如果想看有没有报错也可以 echp $? 如果是0的话 就没有报错

然后make install

启动nginx

用ps aux来查看nginx是否启动

发现已经启动。

那么我们加入到systemctl中先看下centos7中的systemctl是什么样的

systemctl is-enabled iptables.service
systemctl is-enabled servicename.service #查询服务是否开机启动(等同于chkconfig –list)
systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl –failed #显示启动失败的服务

systemctl start nginx.service#启动服务(等同于service httpd start)
systemctl stop nginx.service#停止服务(等同于service httpd stop)
systemctl restart nginx.service#重启服务(等同于service httpd restart)
systemctl status nginx.service#查看服务是否运行(等同于service httpd status)
systemctl enable nginx.service#开机自启动服务(等同于chkconfig httpd on)
systemctl disable nginx.service#开机时禁用服务(等同于chkconfig httpd on)
—————————————————————————————————————

按i输入以下内容

编辑好后保存

然后开启开机启动

当我们运行ecable后他会自动创建一个软连接ln -s ‘/usr/lib/systemd/system/nginx.service’ ‘/etc/systemd/system/multi-user.target.wants/nginx.service’

然后可以用这些命令关掉nginx

后面可以用systemctl来操作nginx.service

如果要和php整合可以编辑/etc/nginx/nginx.conf

nginx日志 模块要求的指定格式

nginx日志 模块要求的指定格式。

指令

 

缓冲区的大小不能超过一个原子的大小写入到磁盘文件。 FreeBSD这个尺寸。

当启用缓冲,将数据写入文件:

如果下一个日志行不适合缓冲;
如果缓冲数据比规定的年龄冲洗参数(1.3.10,1.2.7);
工作过程是当重新开放日志 文件或关闭。
如果gzip使用参数,然后将 之前缓冲数据写入文件的压缩。 压缩级别,可以设置在1(最快, 不压缩)和9(最慢的,最好的压缩)。 默认情况下,缓冲区的
大小等于64K字节,和压缩水平 设置1。 数据自压缩原子块,日志文件可以解压 下“在任何时间。

例:

access_log /path/to/log.gz combined gzip flush=5m;
For gzip compression to work, nginx must be built with the zlib library.

文件路径可以包含变量(0.7.6 +),但有一些 日志:

这个用户其凭据的工作进程使用应该 必须在一个 这样的日志目录中创建文件的权限;
缓存写不工作;
文件的打开和关闭每个日志写 。然而,由于经常使用的文件描述符可以 在存储高速缓存,写旧的文件 可以指定的时间在继续open_log_file_cache指令的有效参数
在每个日志写请求的存在根目录检查,如果它不存在的日志是不 创建。 主意指定是这样的好root和access_log在同一水平:

如果参数(1.7.0)使条件记录。 请求将不会被记录在条件计算结果为“0” 或空字符串。 下面例子中的请求与响应码2xx,3xx, 不会的:

语法: log_format 名称 字符串…;
默认: log_format组合”……”;

语境: HTTP

 

指定的日志格式。

日志格式可以包含普通变量,和变量 只存在于一个写日志的时间:

$bytes_sent  $connection $connection_requests $msec $pipe $request_length $request_time $status $time_iso8601 $time_local

实例

 

nginx报错eg:abc.com” on 0.0.0.0:80, ignored解决方法

nginx: [warn] conflicting server name “这里是域名 eg:abc.com” on 0.0.0.0:80, ignored解决方法

解决方向如下:

在/usr/local/nginx/conf/vhost 下面有很多配置文件,出现这个错误,说明域名有重复,在多个配置文件中都有这个域名。

所以只在vhost目录下只保存 需要的配置文件就可以了,只给不需要的配置文件改名字是不能解决问题的,把不需要的配置文件可以保存在vhost下面新建立的一个文件夹中就可以解决这个问题了。
nginx 网站默认地址 /home/wwwroot/default/

if ($request_uri ~ “xxx.php?xxx”) {
set $iftmp Y;
}
if ($http_user_agent ~ “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)”) {
set $iftmp “${iftmp}Y”;
}
if ($iftmp = YY) { return 400;}
location / {
proxy_pass https://172.0.0.11;
}

重点一 set $iftmp Y 将iftmp设置为Y,set命令是一个大大的亮点
重点二 还是set部分set $iftmp “${iftmp}Y” 在set里面 ${iftmp}Y将参数叠加一次,${iftmp}是一个大大的亮点.
$request_uri是客户端请求的完整请求路径,$http_user_agent是用户端发出请求的浏览器参数.
上面的if判断是一个简单防cc攻击的原型,一般普通的cc攻击会固定攻击页面,然后浏览器参数也大多不变,当前两个if参数同时满足后第三个if就直接返回给请求端400错误,
这样就完成了一次简单的过滤cc攻击请求到正常页面,根据上面的实例可以依葫芦画瓢进行其他一些应用使用.
假设我们需要对 /admin/ 路径进行rewrite,但同时要排除 /admin/images/ 路径不对该路径进行rewrite,可以采用下面的解决办法:
代码如下 复制代码
set $doRewrite “0”;
if ($request_uri ~ ^/admin/) {
set $doRewrite “1”;
}
if ($request_uri ~ ^/admin/images/) {
set $doRewrite “0”;
}
if ($doRewrite = “1”) {
// do rewrite
}

nginx新手指南:启动,停止,并重新配置,nginx作为代理服务器,如何用FastCGI应用程序连接

本指南给出的Nginx基本介绍和描述了一些简单的任务,如果Nginx是否已经正常安装好可以查看本文。如果不是,请查看安装nginx教程。本指南介绍了如何启动和停止nginx的,并重新加载配置,说明该配置文件的结构,并描述如何设置nginx静态内容,如何配置nginx作为代理服务器,以及如何用FastCGI应用程序连接。

Nginx有一个主进程和多个工作进程。主进程的主要目的是阅读并评估配置,并保持工作进程。工做实际加工过程请求。Nginx采用基于事件的模型和操作系统依赖性机制有效分配请求在工作进程。工作进程的数量是在配置文件中定义的可
固定为一个给定的配置或自动调整到可用的CPU核心数量(见worker_processes)。

Nginx的配置文件。默认情况下,配置
文件名为nginx.conf置于目录/usr/local/nginx/conf, /etc/nginx, or
/usr/local/etc/nginx.

启动,停止,并重新配置
要启动,运行可执行文件。一旦Nginx的开始,它可以通过调用
可执行的S参数。使用以下语法:

nginx -s 信号

其中信号可以是下列之一:

快速关掉
stop — fast shutdown

优雅关掉
quit — graceful shutdown

重新载入配置文件
reload — reloading the configuration file

重新打开日志文件
reopen — reopening the log files

例如,停止等待辅助nginx过程完成的现任
请求,下面的命令可以执行:

nginx -s quit

这个命令应该是相同的用户开始nginx下执行。
在配置文件中所做的更改将不会应用到命令重新加载配置
发送到nginx或是重新开始。重新加载配置,执行:
nginx -s reload

一旦主进程接收到信号加载配置,它的语法正确性检查
新的配置文件并试图将提供它的配置。如果这是一个成功的,
主进程开始新的工作进程并将消息发送到旧的工作进程,要求他们
关闭。否则,主进程回滚的变化,继续与旧的工作
配置。老工作进程,接收关闭命令,停止接受新的连接,
继续使用当前请求直到所有这样的请求。在那之后,老工作进程
关闭。

一个信号可以同时发送到nginx进程与UNIX工具如杀了实用的帮助。在这
防止信号直接发送到一个给定的进程ID的进程ID的nginx的主进程
过程写的是,默认情况下,对nginx.pid在目录 /usr/local/nginx/logs or /var/run
例如,如果主进程ID是1628,将退出导致Nginx的优美的信号
关机,执行:

kill -s QUIT 1628

PS工具可以查看所有的nginx进程,例如,在
下面的方法:

ps -ax | grep nginx
配置文件的结构

Nginx的模块组成,通过在配置文件中指定的指令控制。
指令分为简单指令和块指令。一个简单的指令组成的
名称和参数的空间和以分号分隔(;)。一块指令相同
结构作为一个简单的指令,但不是最后一套额外的分号
大括号包围的指令({和})。如果一个块的指令可以有其他指令内支撑,
它被称为一个上下文(例如:事件,HTTP,服务器,和位置)。

放置在任何语境之外的配置文件指令被认为是主要的
语境。事件和HTTP指令驻留在主背景,在HTTP服务器,和位置
服务器。

#标志是注释掉这行。

Serving Static Content

一个重要的Web服务器的任务是提供文件(如图像或静态HTML页)。你会
实施例,根据要求,文件将是从不同的地方
目录:/数据/ WWW(其中可能包含HTML文件)/数据/图像(含图片)。这将
需要编辑配置文件和设置里面的HTTP服务器块两块
定位块。

First, create the /data/www directory and put an index.html file with any text content into it and create the /data/images directory and place some images in it.

Next, open the configuration file. The default configuration file already includes several examples of the server block, mostly commented out. For now comment out all such blocks and start a new server block:

http {
server {
}
}
一般来说,配置文件可能包含多个服务器的端口块区分他们
听和服务器名称。一旦Nginx决定服务器处理一个请求的URI,它测试
在请求的头靠里面的位置定义指令指定的参数
服务器模块。
添加下面的位置块服务器块:

location / {
root /data/www;
}
该定位块指定“/”前缀与URI请求。匹配
请求的URI,将被添加到根指令,就是指定的路径,/数据/ WWW,到
形成路径所要求的文件在本地文件系统。如果有多个匹配位置
块nginx的选择具有最长前缀。上面的定位块提供了最短
前缀的长度,所以,只有所有其他的定位块不能提供一个匹配,这一块将
使用。

下一步,添加第二定位块:

location /images/ {
root /data;
}
这将是一个请求开始/images/ (location / 也符合这样的要求,但
较短的前缀)。
所配置的服务器块看起来应该像这样:

server {
location / {
root /data/www;
}

location /images/ {
root /data;
}
}

这已经是一个工作配置的服务器,侦听端口80访问标准
在HTTP本地机器:/ /本地/。响应与URI开始/图像/请求的,
服务器将文件从/数据/图像目录。例如,在应对
HTTP:/ /本地/图像/实例请求nginx会送/数据/图像/实例文件。如果这样的
文件不存在,Nginx会发送一个响应提示404错误。与URI不启动请求
/图像/将被映射到/数据/ WWW目录。例如,在应对
HTTP:/ /本地/一些/ example.html请求nginx会送/数据/ WWW /一些/ example.html文件。
应用新的配置,启动nginx如果它尚未开始或重新加载信号发送
nginx的主进程,通过执行:

nginx -s reload

在某种情况下没有象预期的那样工作,你可以试着找出原因和access.log
在目录error.log文件 /usr/local/nginx/logs or /var/log/nginx.

建立一个简单的代理服务器

One of the frequent uses of nginx is setting it up as a proxy server, which means a server that receives requests, passes them to the proxied servers, retrieves responses from them, and sends them to the clients.

我们将配置一个基本的代理服务器,它可以从本地文件图像的要求
目录将所有其他请求到代理服务器。在这个例子中,服务器将被定义
在一个单一的nginx实例。
首先,通过添加一个或多个服务器块nginx的配置文件定义的代理服务器
以下内容:

server {
listen 8080;
root /data/up1;

location / {
}
}
这是一个简单的服务器,侦听端口8080(以前,听指令尚未
指定由于标准端口80使用)和地图的所有请求的/数据/时间目录上
本地文件系统。创建这个目录,把index.html文件到它。注意根指令
放置在服务器环境。这些根指令时使用定位块选择服务
一个请求,不包括自己的根指令。

接下来,利用上一节的服务器配置和修改它,使它成为一个代理服务器
配置。在第一位置的块,把proxy_pass指令的协议,名称和端口
在参数指定的代理服务器(在我们的例子中,它是http://localhost:8080 ):
server {
location / {
proxy_pass http://localhost:8080;
}

location /images/ {
root /data;
}
}
我们将修改第二定位块,目前地图请求与/图像/前缀的
/数据/图像目录下的文件,使其与典型的文件图像的匹配请求
扩展。改进的定位块看起来像这样:

location ~ \.(gif|jpg|png)$ {
root /data/images;
}
参数是一个正则表达式匹配所有URI的结局。GIF,JPG,PNG或。。定期
表达应该在~。相应的请求将被映射到/数据/图像
目录。

当选择一个定位块nginx服务请求,它首先检查位置指示,指定
前缀,记住位置的最长前缀,然后检查正则表达式。如果有一个
一个正则表达式匹配,Nginx挑选这个位置,否则选以前的。

The resulting configuration of a proxy server will look like this:

server {
location / {
proxy_pass http://localhost:8080/;
}

location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
此服务器将过滤请求结束。GIF,JPG,PNG或。。并将它们映射到/数据/图像
目录(通过添加URI根指令的参数)和通过所有其他请求代理
服务器的配置。

应用新的配置,将加载信号Nginx作为在前面的章节中描述。
还有更多的指令,可进一步配置代理服务器连接。

FastCGI的代理设置

nginx可用于路由请求FastCGI服务器运行了各种应用
框架和编程语言如PHP。
最基本的nginx配置用FastCGI服务器工作包括使用fastcgi_pass指令
取而代之的是proxy_pass指令,指令集和fastcgi_param通过FastCGI参数
服务器。假定FastCGI服务器可在本地:9000。以代理配置
前一部分为基础,取代proxy_pass与fastcgi_pass指令和指令
改变参数,本地:9000。在PHP中,该script_filename参数用于确定
脚本的名字,和query_string参数是用来传递请求参数。由此产生的
配置将是:

server {
location / {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
}

location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
这将建立一个服务器,将所有请求路由,除了静态图像的要求
代理服务器运行在本地:9000通过FastCGI协议。

linux上nginx服务器如果想隐藏版本号

linux上nginx服务器如果想隐藏版本号
找到nginx的配置文件

vi nginx.conf
在http 加上 server_tokens off;
http {
…省略配置内容
server_tokens off; ->即可隐藏版本号
…省略配置内容
}

然后reload一下 nginx
nginx -s reload

如果centos7 则可以重启nginx
systemctl restart nginx.service

如果不可以的话可以找到fastcgi.conf fastcgi_params
vi fastcgi.conf

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

vi fastcgi_params

把nginx/$nginx_version 改成 apache 就可以了