安装nginx的⼀些注意事项
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的默认错误页⾯
我这⾥不是指通过修改f或者虚拟主机设置来“指定”错误页⾯,⽽是要彻彻底底的修改掉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,即空
如果想要默认关闭所有站点的⽇志,那么可以修改f,在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、如何阻⽌未经许可的域名指向
修改f,添加
server{
listen80 default;
return404;
}
7、如何实现Nginx解析静态,⽽Apache解析动态
⼀个简单的例⼦:
server {
listen80;
server_say;
#指定根⽬录和默认索引⽂件
location / {
root /www/htdocs/proxysite;
index index.php index.html;
# Nginx不到⽂件时,转发请求给后端Apache
error_page 404@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 apachesite:81;
}
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 apachesite:81;
}
#指定access⽇志,关闭error⽇志
access_log /var/log/say-access.log;
error_log /dev/null crit;
}
8、f设置的⼀些建议:
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 ⽬录下的 f 。
-t:测试配置⽂件是否正确,在运⾏时需要重新加载配置的时候,此命令⾮常重要,⽤来检测所修改的配置⽂件是否有语法错误。
-v:显⽰ nginx 版本号。
-V:显⽰ nginx 的版本号以及编译环境信息以及编译时的参数。
例如我们要测试某个配置⽂件是否书写正确,我们可以使⽤以下命令
sbin/nginx – t – c f
附录:
让Nginx⽀持Perl
1,安装perl的FCGI模块
perl -MCPAN -e shell
cpan[1]>install FCGI
cpan[1]>install FCGI::ProcManager
cpan[1]>exit
或者直接:
1. perl -MCPAN -e 'install FCGI'
2. perl -MCPAN -e 'install FCGI::ProcManager'nginx和apache区别
cpan中国镜像有两个,但有时候可能会连接不上,执⾏以下语句然后再安装
# perl -MCPAN -e shell
cpan> o conf urllist unshift www.perl/CPAN/
cpan> o conf commit
2.获取fastcgi-wrapper.pl
wget www.ruby-forum/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.建⽴f
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_i;
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内添加
f;
配置完成,重新启动nginx
nginx -s reload
6、测试 i
1. #!/usr/bin/perl
2. print "Content-type: text/html\n\n";
3. print "<html><body>Hello, world.</body></html>";
赋予执⾏权限
chmod +i
7、⼀个简单的控制perl-fcgi的启动脚本
1#!/bin/bash
2 echo
3 case $1 in
4
5 stop)
6 /bin/rm -f /var/run/nginx/perl_cgi-dispatch.sock
7 echo "FastCGI Perl Stopped."
8 ;;
9
10 start)
11 /usr/local/bin/fastcgi-wrapper.pl &
12 echo "FastCGI Perl Started."
13 ;;
14
15 status)
16 ps aux | grep fastcgi-wrapper
17 ;;
18
19 restart)
20 /bin/rm -f /var/run/nginx/perl_cgi-dispatch.sock
21 echo "FastCGI Perl Stopped."
22 /usr/local/bin/fastcgi-wrapper.pl &
23 echo "FastCGI Perl Started."
24 ;;
25
26 *)
27 echo "Usage: ./perl.sh start(stop|restart)"
28 ;;
29
30 esac
31 echo
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论