1、如何彻底屏蔽掉Nginx的banner

为了安全或者某些个人的原因,如果要屏蔽掉nginx的banner,要修改以下几个位置:

src/http/ngx_http_header_filter_module.c
src/http/ngx_http_special_response.c
src/core/nginx.h

按照网上绝大部分文章的说法是仅仅修改nginx.h,那么只在一种情况下这种修改是有效的:把server_tokens设置为on;但是,此时在404/403等各种内置错误页面面内看到的底部banner提示也仍然是nginx,所以,必须修改上述的三个文件才能全部屏蔽掉

2、如何修改Nginx的默认错误页面
我这里不是指通过修改nginx.conf或者虚拟主机设置来“指定”错误页面,而是要彻彻底底的修改掉Nginx默认编译进去的404,方法很简单,修改 src/http/ngx_http_special_response.c,在这个文件靠近底部的地方有3xx到5xx各种错误页面的代码

3、如何关闭错误日志
通过error-log off;这种写法是关闭不掉的,如果是通过rpm安装的话,会在/usr/share/nginx下产生一个文件,文件名就是off,错误日志都会写到这里。如果是编译安装的话根据编译路径也一定会生成这个文件。正确的关闭方法是:

error_log /dev/null crit;

加上crit是指只记录级别为严重的错误,日志记录到/dev/null,即空

如果想要默认关闭所有站点的日志,那么可以修改nginx.conf,在http{}里加上:

access_log off;
error_log /dev/null crit;

如果需要给个别主机开启日志,那么在该主机的server{}段内单独指定access_log和error_log即可。

4、Nginx的日志是如何分级的

#define NGX_LOG_STDERR 0
#define NGX_LOG_EMERG 1
#define NGX_LOG_ALERT 2
#define NGX_LOG_CRIT 3
#define NGX_LOG_ERR 4
#define NGX_LOG_WARN 5
#define NGX_LOG_NOTICE 6
#define NGX_LOG_INFO 7
#define NGX_LOG_DEBUG 8

默认的错误等级则是:NGX_LOG_ERR
所以如果你需要详细的调试信息,你应该调整到DEBUG,记录会非常的详尽

5、如何开启Nginx的SSI

添加如下三行

ssi on;
ssi_silent_errors on;
ssi_types text/shtml;

6、如何阻止未经许可的域名指向
修改nginx.conf,添加

server{
listen default;
return ;
}

7、如何实现Nginx解析静态,而Apache解析动态

一个简单的例子:

server {
listen ;
server_name proxy.crsay.com; #指定根目录和默认索引文件
location / {
root /www/htdocs/proxysite;
index index.php index.html; # Nginx找不到文件时,转发请求给后端Apache
error_page @proxy; #js/css与图片不记录日志,设置过期时间为1天
location ~ .*\.(js|css)$ {
access_log off;
expires 1d;
} location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
access_log off;
expires 1d;
}
} #proxy_pass指定要处理php的服务器地址,如果用ip可以直接写,如果用域名,那么要修改/etc/hosts做本地指向
#动态文件.php请求转发给后端Apache
location ~ \.php$ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://apachesite:;
} location @proxy {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://apachesite:;
} #指定access日志,关闭error日志
access_log /var/log/nginx/proxysite.crsay.com-access.log;
error_log /dev/null crit;
}

8、nginx.conf设置的一些建议:
1)worker_rlimit_nofile和worker_connections的设置:
这个建议设置为系统ulimit -n得到的数字保持一致

2)gzip
压缩等级建议设置为2

3)log格式设置为如下,保证可以用作awstats分析

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

9,常用的 Nginx 参数和控制

程序运行参数
Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的。 Nginx 的参数包括有如下几个:
-c <path_to_config>:使用指定的配置文件而不是 conf 目录下的 nginx.conf 。
-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。
-v:显示 nginx 版本号。
-V:显示 nginx 的版本号以及编译环境信息以及编译时的参数。
例如我们要测试某个配置文件是否书写正确,我们可以使用以下命令
sbin/nginx – t – c conf/nginx2.conf

附录:

让Nginx支持Perl

1,安装perl的FCGI模块

perl -MCPAN -e shell
cpan[]>install FCGI
cpan[]>install FCGI::ProcManager
cpan[]>exit

或者直接:

  1. perl -MCPAN -e 'install FCGI'
  2. perl -MCPAN -e 'install FCGI::ProcManager'

cpan中国镜像有两个,但有时候可能会连接不上,执行以下语句然后再安装

# perl -MCPAN -e shell
cpan> o conf urllist unshift http://www.perl.com/CPAN/
cpan> o conf commit

2.获取fastcgi-wrapper.pl

wget http://www.ruby-forum.com/attachment/1583/fastcgi-wrapper.pl

3.开机启动
把文件保存在/usr/local/bin/里,编辑/etc/rc.local让其开机以daemon方式启动:

/usr/local/bin/fastcgi-wrapper.pl &

它会建立/var/run/nginx/perl_cgi-dispatch.sock这个sock,在Nginx的配置文件上要用到。
(确保运行nginx的用户对/var/run/nginx有读写的权限)

查看进程是否启动

ps aux|grep fcgi-wrapper.pl

4.建立perl.conf

location ~ .*\.(pl|cgi)?$$ {
gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped
fastcgi_pass unix:/var/run/nginx/perl_cgi-dispatch.sock;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME /var/www/awstats/wwwroot/cgi-bin$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}

5、修改Nginx配置文件
在server内添加

include perl.conf;

配置完成,重新启动nginx

nginx -s reload

6、测试 test.cgi

  1. #!/usr/bin/perl
  2. print "Content-type: text/html\n\n";
  3. print "<html><body>Hello, world.</body></html>";

赋予执行权限

chmod +x test.cgi

7、一个简单的控制perl-fcgi的启动脚本

 #!/bin/bash
echo
case $ in stop)
/bin/rm -f /var/run/nginx/perl_cgi-dispatch.sock
echo "FastCGI Perl Stopped."
;; start)
/usr/local/bin/fastcgi-wrapper.pl &
echo "FastCGI Perl Started."
;; status)
ps aux | grep fastcgi-wrapper
;; restart)
/bin/rm -f /var/run/nginx/perl_cgi-dispatch.sock
echo "FastCGI Perl Stopped."
/usr/local/bin/fastcgi-wrapper.pl &
echo "FastCGI Perl Started."
;; *)
echo "Usage: ./perl.sh start(stop|restart)"
;; esac
echo

安装nginx的一些注意事项的更多相关文章

  1. Linux(Centos)之安装Nginx及注意事项

    1.Nginx的简单说明 a.  Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,期初开发的目的就是为了代理电子邮件服务器室友:Igor Sysoev开发 ...

  2. 转:Linux(Centos)之安装Nginx及注意事项

    1.Nginx的简单说明 a.  Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,期初开发的目的就是为了代理电子邮件服务器室友:Igor Sysoev开发 ...

  3. 【Linux】Centos之安装Nginx及注意事项

    相关内容链接 [Linux]nginx常用命令 [nginx]详细配置说明 1.Nginx的简单说明 a.  Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务 ...

  4. [CentOS 7] 安装nginx

    下载对应当前系统版本的nginx包(package) # wget  http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-cent ...

  5. centos7最小版本安装nginx+tomcat+java+mysql运行环境

    最近项目从windows搬到linux,由于项目组成员有限并且有其它紧急的任务需要处理,因而这个任务就落到我的头上了.下面记录下centos最小版本安装nginx+tomcat+mysql+java的 ...

  6. redhat 5下源码安装nginx服务

    首先确保机器中已安装 gcc c++,libtool等工具,保证可执行源码安装 A.为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Co ...

  7. nginx学习(一):安装nginx

    学习下nginx,本篇文章主要讲解下在linux下安装nginx 下载nginx 安装包 1.去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本: 2.上传tar包到li ...

  8. Windows安装Nginx需要注意的地方

      在使用 Nginx 之前,首先要三连问,它是什么?用来做什么?为什么用它? 这篇文章很好的解答了上面的问题,并补充了什么是正向代理和反向代理以及区别的知识 https://www.cnblogs. ...

  9. 如何在Linux系统上安装nginx

      安装Nginx 下载Nginx 到官网http://nginx.org/下载对应nginx包,推荐使用稳定版本进入官网之后界面如下 点击download进行到下一页 然后下载所需要的版本(强烈建议 ...

随机推荐

  1. 一步一步学Silverlight 2系列(17):数据与通信之ADO.NET Data Services

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  2. Spring3 Schedule Task之注解实现 (两次起动Schedule Task 的解决方案)

    Spring3 Schedule Task之注解实现 (两次起步Schedule Task 的解决方案)Spring3 Schedule Task之注解实现 (两次启动Schedule Task 的解 ...

  3. UIFont 字体样式 [UIFont fontWithName~];

    设置字体样式代码:[UIFont fontWithName:@"Arial-BoldMT" size:15] 下边一一列举: 一:Font Family: American Typ ...

  4. BZOJ_2140_稳定婚姻_强连通分量

    BZOJ_2140_稳定婚姻_强连通分量 Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚 姻问题的专家认为,是与简化离 ...

  5. linux--安装phpcurl扩展

    在UBUNTU中直接用APT包管理工具安装: apt-get install curl libcurl3 libcurl3-dev php5-curl 安装好后重启Apache服务器就行了,如果还是不 ...

  6. node --save可以省略掉手动修改package.json的步骤

    当你为你的模块安装一个依赖模块时,正常情况下你得先安装他们(在模块根目录下npm install module-name),然后连同版本号手动将他们添加到模块配置文件package.json中的依赖里 ...

  7. 如何在Centos7上安装&使用docker

    Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单.容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止.Docker 帮助系统管理员和程序员在容器中开发应用程序,并且 ...

  8. ccflow_003.驰骋流程引擎表单方案

    003.驰骋流程引擎表单方案 设计流程主要有四个步骤 设计成型的效果图 表单的展示效果 表单方案 提供了八种表单模式 内置傻瓜表单 设计好的傻瓜表单演示 运行查看效果 内置自由表单 这是已经设计好的自 ...

  9. hdoj5793 A Boring Question【找规律】

    找出的规律.... 1 2 3 2 2 7 3 2 15 4 2 31 5 2 63 1 3 4 2 3 13 3 3 40 4 3 121 5 3 361 然后我们来推个公式: 比如说a2=3a1+ ...

  10. GoAhead4.1.0 开发总结三(GoAction+Ajax实现局部数据交互)

    环境 官方文档:https://www.embedthis.com/goahead/doc/ 源码下载: goahead-4.1.0-src.tgz 系统平台:Ubuntu 12.04.4 gcc v ...