注:以下所有操作均在CentOS 6.5 x86_64位系统下完成。

#准备工作#

在安装Nginx之前,请确保已经使用yum安装了pcre等基础组件,具体见《CentOS安装LNMP环境的基础组件》

然后创建www的用户组和用户,并且不允许登录权限:

  1. # id www
  2. id: www:无此用户
  3. # groupadd www
  4. # useradd -g www -s /sbin/nologin www
  5. # id www
  6. uid=(www) gid=(www) 组=(www)

#Nginx的安装#

开始下载Nginx并进行编译安装:

  1. # cd /usr/local/src
  2. # wget http://nginx.org/download/nginx-1.6.2.tar.gz
  3. # tar zxf nginx-1.6..tar.gz
  4. # cd nginx-1.6.
  5. # ./configure --prefix=/usr/local/nginx-1.6. --group=www --user=www --with-http_ssl_module --with-pcre --with-http_stub_status_module --with-http_gzip_static_module
  6.  
  7. Configuration summary
  8. + using system PCRE library
  9. + using system OpenSSL library
  10. + md5: using OpenSSL library
  11. + sha1: using OpenSSL library
  12. + using system zlib library
  13.  
  14. nginx path prefix: "/usr/local/nginx-1.6.2"
  15. nginx binary file: "/usr/local/nginx-1.6.2/sbin/nginx"
  16. nginx configuration prefix: "/usr/local/nginx-1.6.2/conf"
  17. nginx configuration file: "/usr/local/nginx-1.6.2/conf/nginx.conf"
  18. nginx pid file: "/usr/local/nginx-1.6.2/logs/nginx.pid"
  19. nginx error log file: "/usr/local/nginx-1.6.2/logs/error.log"
  20. nginx http access log file: "/usr/local/nginx-1.6.2/logs/access.log"
  21. nginx http client request body temporary files: "client_body_temp"
  22. nginx http proxy temporary files: "proxy_temp"
  23. nginx http fastcgi temporary files: "fastcgi_temp"
  24. nginx http uwsgi temporary files: "uwsgi_temp"
  25. nginx http scgi temporary files: "scgi_temp"
  26.  
  27. # make && make install
  28. # ln -s /usr/local/nginx-1.6./ /usr/local/nginx
  29. # chown -R www:www /usr/local/nginx
  30. # chown -R www:www /usr/local/nginx-1.6.

把Nginx的sbin目录加入PATH:

  1. # vim /etc/profile
  2.  
  3. export PATH=$PATH:/usr/local/mysql/bin:$JAVA_HOME/bin:/usr/local/nginx/sbin
  4.  
  5. # source /etc/profile

查看Nginx的版本信息,并且检验上一步骤是否成功:

  1. # nginx -V
  2. nginx version: nginx/1.6.
  3. built by gcc 4.4. (Red Hat 4.4.-) (GCC)
  4. TLS SNI support enabled
  5. configure arguments: --prefix=/usr/local/nginx-1.6. --group=www --user=www --with-http_ssl_module --with-pcre --with-http_stub_status_module

至此,Nginx已经安装完毕。

#Nginx的启动/重启/关闭#

给Nginx的webapp配置相关路径(这里是为了后面运维管理方便,可以把不同的Web项目放到该目录下):

  1. # mkdir -p /data/www

简单修改下配置文件:

  1. # vim /usr/local/nginx/conf/nginx.conf
  2.  
  3. user www;
  4. worker_processes ;
  5. events {
  6. worker_connections ;
  7. }
  8. http {
  9. include mime.types;
  10. default_type application/octet-stream;
  11. sendfile on;
  12. keepalive_timeout ;
  13. gzip on;
  14. server {
  15. listen ;
  16. server_name localhost;
  17. location / {
  18. root html;
  19. index index.html index.htm;
  20. }
  21. }
  22. }

开始启动Nginx:

  1. # nginx

这个时候打开浏览器访问地址http://youripaddress应该可以看到:

至此,Nginx已经启动成功。

一般来说,当修改了nginx.conf配置文件后,可以直接重启让配置生效,重启之前一般检测下配置文件是否正确:

  1. # nginx -t
  2. nginx: the configuration file /usr/local/nginx-1.6./conf/nginx.conf syntax is ok
  3. nginx: configuration file /usr/local/nginx-1.6./conf/nginx.conf test is successful
  4. # nginx -s reload

另外,重启也可以通过发信号的方式:

  1. # kill -HUP ${master_pid}

关闭的命令如下:

  1. # nginx -s quit
  2. # nginx -s stop

注:quit表示等请求结束后再关闭,stop表示立刻关闭。

也可以通过发信号的方式来关闭:

  1. # kill -QUIT ${nginx_master}
  2. # kill -TERM ${nginx_master}
  3. # kill - ${nginx_master}

注:-QUIT表示从容停止,等所有请求结束后再关闭进程;TERM则表示立刻关闭进程;-9表示强制关闭。

为了以后管理上的方便, 我们这里写个启动脚本,以后就可以用service命令来启动,如下:

  1. # vim /etc/init.d/nginxd
  2.  
  3. #!/bin/sh
  4. # chkconfig:
  5. # description:Nginx Server
  6.  
  7. NGINX_HOME=/usr/local/nginx-1.6.
  8. NGINX_SBIN=$NGINX_HOME/sbin/nginx
  9. NGINX_CONF=$NGINX_HOME/conf/nginx.conf
  10. NGINX_PID=$NGINX_HOME/logs/nginx.pid
  11.  
  12. NGINX_NAME="Nginx"
  13.  
  14. . /etc/rc.d/init.d/functions
  15.  
  16. if [ ! -f $NGINX_SBIN ]
  17. then
  18. echo "$NGINX_NAME startup: $NGINX_SBIN not exists! "
  19. exit
  20. fi
  21.  
  22. start() {
  23. $NGINX_SBIN -c $NGINX_CONF
  24. ret=$?
  25. if [ $ret -eq ]; then
  26. action $"Starting $NGINX_NAME: " /bin/true
  27. else
  28. action $"Starting $NGINX_NAME: " /bin/false
  29. fi
  30. }
  31.  
  32. stop() {
  33. kill `cat $NGINX_PID`
  34. ret=$?
  35. if [ $ret -eq ]; then
  36. action $"Stopping $NGINX_NAME: " /bin/true
  37. else
  38. action $"Stopping $NGINX_NAME: " /bin/false
  39. fi
  40. }
  41.  
  42. restart() {
  43. stop
  44. start
  45. }
  46.  
  47. check() {
  48. $NGINX_SBIN -c $NGINX_CONF -t
  49. }
  50.  
  51. reload() {
  52. kill -HUP `cat $NGINX_PID` && echo "reload success!"
  53. }
  54.  
  55. relog() {
  56. kill -USR1 `cat $NGINX_PID` && echo "relog success!"
  57. }
  58.  
  59. case "$1" in
  60. start)
  61. start
  62. ;;
  63. stop)
  64. stop
  65. ;;
  66. restart)
  67. restart
  68. ;;
  69. check|chk)
  70. check
  71. ;;
  72. status)
  73. status -p $NGINX_PID
  74. ;;
  75. reload)
  76. reload
  77. ;;
  78. relog)
  79. relog
  80. ;;
  81. *)
  82. echo $"Usage: $0 {start|stop|restart|reload|status|check|relog}"
  83. exit
  84. esac
  85.  
  86. # chmod +x /etc/init.d/nginxd
  87. # chkconfig nginxd on

这样子就可以通过service来启动:

  1. # service nginxd start

#Nginx的安全配置#

1、 首先设置不允许目录浏览,默认配置即为不允许。

  1. autoindex off

2、开启访问日志,nginx中默认已开启,这里我们后续为了运维管理上的方便最好把日志单独放到/data目录下。

  1. access_log /data/www/logs/localhost.access.log

3、确保目录的安全,由于Nginx使用的是www用户启动,黑客入侵服务器成功后将获得www用户的权限,所以需要确保网站Web目录和文件的属主与启动用户不同,防止网站被黑客恶意篡改和删除。网站Web目录和文件的属主可以设置为root,其中Web目录权限统一设置为755,Web文件权限统一设置为644。只有上传目录等可读写权限的目录可以被设置为777,为了防止黑客上传木马到777权限目录中,还必须保证该777权限的目录没有执行脚本的权限。这里有两种情况处理:

1)对于使用PHP的业务,配置如下:

  1. location ~* ^/data/www/logs/.*\.(php|php5)$ {
  2. deny all;
  3. }

注:当然最安全的还是给PHP的可执行目录采用白名单的方式,这个我们在PHP的安装一节中再详细介绍。

2)对于非使用PHP的业务(如python、cgi等),则需要禁止外部访问777目录,配置如下:

  1. location ~ ^/data/www/logs/ {
  2. deny all;
  3. }

4、对于管理目录,需要限制访问的IP地址,比如这里限制访问nginx状态的:

  1. server {
  2. location /nginx-admin {
  3. stub_status on;
  4. access_log logs/nginx-admin.log;
  5. allow 11.12.23.0/;
  6. deny all;
  7. }
  8.  
  9. location /admin {
  10. ...
  11. }
  12. }

注:上面配置的11.12.23.0/24指的就是当前运维客户端的IP地址段。

在允许IP的机器上输入地址应该可以看到:

而不允许的用户访问应该是不可以的,会显示403错误,比如:

5、把Nginx默认的首页等页面删除,使用业务自己的首页来顶替。

6、不允许IP直接访问服务器,这样的好处是怕当IP地址泄漏出去之后,被人用别的域名来指向了这个IP地址,可以设置让其返回500等错误码。比如:

  1. server {
  2. listen default;
  3. return ;
  4. }
  5. server {
  6. listen ;
  7. server_name www.tencent.com tencent.com;
  8. root /data/www/tencent;
  9.  
  10. access_log /data/logs/nginx/tencent.access.log;
  11. error_log /data/logs/nginx/tencent.error.log;
  12. }

注:上面的配置表示当使用IP地址直接访问时将出错,而使用域名访问时(比如请求tencent.com则正常)。

#Nginx的性能配置#

1、使用epoll的I/O模型,一般为默认。

  1. use epoll;

2、 配置Nginx的进程数,一般根据CPU的数目来设置,比如双核的可以配置为2或4。

  1. work_processes 4;

3、配置每个进程允许的最大连接数,理论上每台Nginx服务器的最大连接数为work_processes*worker_connections,需要根据当前服务器配置进行设置。

  1. worker_connections ;

4、配置Nginx进程打开的最多文件描述符数目,最好与系统的ulimit -n保持一致。

  1. worker_rlimit_nofile ;

5、配置keepalive超时时间,默认以秒为单位。

  1. keepalive_timeout ;

6、配置客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置,分页大小可以用命令getconf PAGESIZE来获取。

  1. client_header_buffer_size 4k;

7、配置为打开文件指定缓存(默认没有启用),建议和打开文件数一致,并且为其指定缓存过期时间。

  1. open_file_cache max= inactive=20s;

8、配置缓存的有效信息检查时间间隔。

  1. open_file_cache_valid 30s;

9、配置在缓存过期时间内文件的最少使用次数,如果低于这个次数则将缓存移除。

  1. open_file_cache_min_uses ;

CentOS安装Nginx-1.6.2+安全配置+性能配置的更多相关文章

  1. centos 安装 nginx 及配置 的坑

    centos 安装 nginx 教程 1.创建/etc/yum.repos.d/nginx. centos 安装 nginx 教程 1.创建/etc/yum.repos.d/nginx.repo to ...

  2. 【推荐】CentOS安装PHP-5.6.4+扩展安装+安全配置+性能配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 前段时间PHP官方发布了一个重要的安全升级公告,修复了两个unserialize函数的严重漏洞,目前受影响的版本有: ...

  3. centos安装nginx(针对一哥们的博客进行的详细补充(用红色字体标出了补充部分))

    centos安装nginx 原文地址:http://www.cnblogs.com/leechenxiang/p/5402960.html 一.什么是nginx 是一个C语言开发的HTTP反向代理服务 ...

  4. centos 安装nginx

    centos 安装nginx 安装依赖 更换源 yum install http://mirrors.163.com/centos/6.8/extras/x86_64/Packages/epel-re ...

  5. CentOS安装Nginx Pre-Built

    CentOS安装Nginx Pre-Built比较简单,具体可参见:http://nginx.org/en/linux_packages.html#stable. 本文列出详细步骤,已做备份: cat ...

  6. centos安装nginx和配置

    安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 一. gcc 安装安装 nginx 需要先 ...

  7. CentOS安装Nginx,并配置nodejs反向代理

    安装介绍 安装位置:/usr/local/nginx nginx安装包下载地址:http://nginx.org/download/nginx-1.7.11.tar.gz 安装依赖软件 安装nginx ...

  8. centos安装nginx并配置SSL证书

    安装nginx的命令 sudo yum install epel-release sudo yum install nginx 让nginx随系统启动而启动 sudo systemctl enable ...

  9. [Linux] - CentOS 安装nginx

    linux版本:CentOS 6.0+ 安装nginx方法: 1.下载nginx rpm包命令: wget http://nginx.org/packages/centos/6/noarch/RPMS ...

  10. [转]linux CentOS 安装 Nginx

    网上找的教程,一路走下来的,原文如下: 一.安装nginx     1.在nginx官方网站下载一个包,下载地址是:http://nginx.org/en/download.html     2.Wi ...

随机推荐

  1. 文本处理三剑客之AWK的用法

    1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...

  2. CIRI 识别circRNA的原理

    CIRI 根据circRNA 连接点处的reads来识别circRNA, 在连接点处的reads 其比对情况非常特殊: CIRI 根据3种模型来识别circRNA, 连接点处的read 叫做junct ...

  3. 手淘H5移动端适配方案flexible源码分析

    移动端适配一直是一个值得探讨的问题,在业余时间我找了一些页面,查看了一些厂商对于移动端H5页面的适配方案,看到了几个典型的例子,今天就来记录一下我看到的第一个典型的例子,也是我们公司目前普通H5项目正 ...

  4. 性能测试指标的理解--cpu和load

    第一次做性能测试,按照操作文档磕磕碰碰的完成了,并且拿到了结果,看到一堆的指标和数据,还是傻眼了,不知道各个指标是什么意思了. 咨询了大牛和度娘,消化理解了一下,不知道是不是正确的. CPU使用率: ...

  5. Android学习笔记——Menu(一)

    背景: Android3.0(API level 11)开始,Android设备不再需要专门的菜单键. 随着这种变化,Android app应该取消对传统6项菜单的依赖.取而代之的是提供anction ...

  6. 做BS开发,你应该知道的一些东西

    界面和用户体验(Interface and User Experience) 知道各大浏览器执行Web标准的情况,保证你的站点在主要浏览器上都能正常运行.你至少要测试以下引擎:Gecko(用于Fire ...

  7. HTML <a> 标签的状态和 target 属性

    <a>的四种状态 A:link  连接平常状态 A:hover  鼠标放上去的时候 A:active  鼠标按下的时候 A:visited 连接被访问过后的状态 target属性 _bla ...

  8. Java web url 规范

    设计URI应该遵循的原则 URI是网站UI的一部分,因此,可用的网站应该满足这些URL要求 简单,好记的域名 简短(short)的URI 容易录入的URI URI能反应站点的结构 URI是可以被用户猜 ...

  9. HBase表的架构原理

    HBase总体架构图 Hbase Table的基本单位是Region,一个Table相应多个Region.Table层级关系例如以下: Table       (HBase table)     Re ...

  10. POJ 1946 Cow Cycling(抽象背包, 多阶段DP)

    Description The cow bicycling team consists of N (1 <= N <= 20) cyclists. They wish to determi ...