nginx安装及配置详解

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

依赖:

yum groupinstall "Development Tools" "Server Platform Development" -y
yum install  openssl-devel pcre-devel zlib-devel

添加用户组:

groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin  -M nginx

安装nginx1.6.3:

[[email protected] nginx-1.6.3]# ./configure   --prefix=/usr/local/nginx1.6.3     --error-log-path=/var/log/nginx/error.log   --http-log-path=/var/log/nginx/access.log   --pid-path=/var/run/nginx/nginx.pid    --lock-path=/var/lock/nginx.lock   --with-http_ssl_module --with-http_flv_module   --with-http_stub_status_module   --with-http_gzip_static_module  --http-client-body-temp-path=/var/tmp/nginx/client/  --http-proxy-temp-path=/var/tmp/nginx/proxy/  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi  --http-scgi-temp-path=/var/tmp/nginx/scgi   --with-pcre --user=nginx  --group=nginx --add-module=/tools/ngx_http_consistent_hash-master  |tee /tmp/nginx.out
[[email protected] nginx-1.6.3]# make && make install
[[email protected] nginx-1.6.3]# mkdir /var/tmp/nginx
[[email protected] nginx-1.6.3]# chown -R nginx /var/tmp/nginx
[[email protected] local]# cd /usr/local
[[email protected] local]# ln -sv nginx1.6.3/  nginx

配置文件高亮

注意原文件路径

nginx.vim 下载地址:http://www.vim.org/scripts/script.php?script_id=1886

[[email protected] .vim]# mkdir ~/.vim/syntax/ -pv
[[email protected] ~]# mv /tools/nginx.vim  ~/.vim     #在附件中
[[email protected] .vim]# cd /root/.vim
[[email protected] .vim]# echo ‘au BufRead,BufNewFile /usr/local/nginx1.6.3/conf/*.conf,/usr/local/nginx1.6.3/conf/extra/*.conf if &ft == "" | setfiletype nginx | endif ‘  >> filetype.vim

nginx.conf配置:

[[email protected] conf]# egrep -v ‘^$|#‘ nginx.conf.default >nginx.conf
[[email protected] crontab]# vim /usr/local/nginx/conf/nginx.conf
user  nginx;       #用户
worker_processes  auto;    #worker进程的个数 cpu个数-1
worker_rlimit_nofile 99999;#打开最大的文件个数
pid   /var/run/nginx.pid;
events {
    worker_connections  4000;#每个worker能够并发响应的最大请求数
}
http {
log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;
    include       mime.types;#支持多媒体类型
    default_type  application/octet-stream;
    sendfile        on;               #由内核直接转发 异步模式
    keepalive_timeout  5;   #持久连接5s

    upstream webservers{     #上游服务器  
     ip_hash;
     server martin weight=1 max_fails=2 fail_timeout=2;
     server lucia  weight=1 max_fails=2 fail_timeout=2;
    }
    include extra/*.conf;  #引入虚拟主机
}
[[email protected] crontab]# vim /usr/local/nginx/conf/extra/demo.conf 
server{
        listen 80;
        server_name demo.com;   #虚拟主机
         gzip  on;    #开启压缩功能
         gzip_comp_level 6;     #压缩级别6适中
         gzip_disable msie6;    #不支持ie6
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;
        location / {
                root /www/web/demo;
                proxy_pass http://webservers/;    #反向代理服务器
                proxy_set_header X-Real-IP $remote_addr; #转发客户端ip
                fastcgi_param    SCRIPT_FILENAME scripts$fastcgi_script_name;#转发uri
                index index.php index.html;
        }
        error_page 500 502 503 504 /50x.html;
        access_log /mydata/nginx/access_log/demo.access.log main buffer=32k; #访问日志开启缓存写入
        error_log  /mydata/nginx/error_log/error.log  notice;     #错误日志路径及级别
   
       location /status{           
                auth_basic ‘let me see see‘;
                auth_basic_user_file /usr/local/nginx1.6.3/conf/.htpasswd;   #添加认证
                stub_status on;
                access_log off;
                allow 192.168.1.107;     #允许ip 
                deny all;    #拒绝其它ip
        }
}
}

nginx内置变量说明:

[[email protected] conf]# cat /usr/local/nginx/conf/fastcgi_params
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  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  HTTPS              $https if_not_empty;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
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;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

gzip介绍:
将nginx响应给客户端的报文进行压缩,能够节约带宽并提高响应速度。要使用压缩功能,需要在编译安装时添加Gzip Precompression模块(--with-http_gzip_static_module)。
gzip配置的常用参数:
gzip on|off;  #是否开启gzip
gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA 什么样的Uri不进行gzip
gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied          # 设置请求者代理服务器,该如何缓存内容
gzip_types text/plain  application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css
gzip_vary on|off  # 是否传输gzip压缩标志
  注意:
图片/mp3这样的二进制文件,不必压缩
因为压缩率比较小, 比如100-80字节,而且压缩也是耗费CPU资源的.
比较小的文件不必压缩

gzip on;
gzip_comp_level 6;
gzip_disable msie6;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;

expires介绍:
nginx的缓存设置  提高网站性能
对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的缓存.
可以, 用到 nginx的expires设置 .
nginx中设置过期时间,非常简单,
在location或if段里,来写.
格式  expires 30s;
      expires 30m;
      expires 2h;
      expires 30d;
(注意:服务器的日期要准确,如果服务器的日期落后于实际日期,可能导致缓存失效)

URL rewrite:

location / {
                    root /www/b.org;
                    rewrite ^/images/(.*)$ /imgs/$1 last;
                    rewirte ^/imgs/(.*)$ /images/$1;
                }

这样还是死循环
                http://www.b.org/images/a.jpg --> http://www.b.org/imgs/a.jpg   会重新进来然后在匹配
                last: 一旦被当前规则匹配并重写后立即停止检查后续的其它rewrite的规则,而后通过重写后的规则重新发起请求;
                break: 一旦被当前规则匹配并重写后立即停止后续的其它rewrite的规则,而后继续由nginx进行后续操作;
                redirect: 返回302临时重定向;
                permanent: 返回301永久重定向;
一般将rewrite写在location中时都使用break标志

location /status{           
                auth_basic ‘let me see see‘;
                auth_basic_user_file /usr/local/nginx1.6.3/conf/.htpasswd;   #添加认证
                stub_status on;
                access_log off;
                allow 192.168.1.107;     #允许ip 
                deny all;    #拒绝其它ip
        }

用户认证功Auth Basic模块:

[[email protected] conf]# htpasswd -m -c /usr/local/nginx1.6.3/conf/.htpasswd tom    #c创建文件
[[email protected] conf]# htpasswd -m  /usr/local/nginx1.6.3/conf/.htpasswd marvin
 location /status{
                add_header Cache-Control no-store;
                auth_basic ‘let me see see‘;
                auth_basic_user_file /usr/local/nginx1.6.3/conf/.htpasswd;
                stub_status on;
                access_log off;
                allow 192.168.1.107;
                deny all;
        }

反向代理,负载均衡:

通过upstream模块可定义一个上游服务器组,在反向代理时,将请求代理至这个服务器组,实现负载均衡。upstream模块的负载均衡算法主要有三种,轮调(round-robin)、ip哈希(ip_hash)和最少连接(least_conn)三种。

http {
upstream webservers{
     ip_hash;
     server martin weight=1 max_fails=2 fail_timeout=2;
     server lucia  weight=1 max_fails=2 fail_timeout=2;
    }
location / {
                root /www/web/demo;
                proxy_pass http://webservers/;
                proxy_set_header X-Real-IP $remote_addr;
                index index.php index.html;
        }
}
server:定义一个upstream服务器的地址,还可包括一系列可选参数,如:
    weight:权重;
    max_fails:最大失败连接次数,失败连接的超时时长由fail_timeout指定;
    fail_timeout:等待请求的目标服务器发送响应的时长;
    backup:用于fallback的目的,所有服务均故障时才启动此服务器;
    down:手动标记其不再处理任何请求;

over

时间: 2024-10-05 07:25:42

nginx安装及配置详解的相关文章

varnish安装及配置详解

varnish系统架构: varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程). Management进程主要实现应用新的配置.编译VCL.监控varnish.初始化varnish以及提供一个命令行接口等.Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回应,Management将会重启此Child进程. Child进程包含多种类型的线程,常见的如:Acceptor线程:接收新的连接

nginx与fastdfs配置详解与坑

nginx与fastdfs配置详解与坑 环境ubantu19.04fastdfs-5.11fastdfs-nginx-module-1.20libfastcommon-1.0.39nginx-1.15.12pcre2-10.33openssl-1.0.2r nginx配置过程 https://blog.csdn.net/tjcyjd/article/details/69663348 ssl与依赖库 https://blog.csdn.net/g1531997389/article/details

nginx一些参数配置详解

nginx的配置:    正常运行的必备配置:       1.user username [groupname];           指定运行worker进程的用户和组       2.pid /path/to/pidfile_name nginx的pid文件 3.worker_rlimit_nofile #;            一个worker进程所能够打开的最大文件句柄数:       4.worker_rlimit_sigpending #;            设定每个用户能够

libCURL开源库在VS2010环境下编译安装,配置详解

libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 CURL开源库VS2010环境下编译安装,配置详解 一 准备 1.1 CURL官网下载地址:http://curl.haxx.se/download.html 1.2 找到源码包,我这里下载的是7.32.0版:http://curl.haxx.se/download/curl-7.32.0.zip 二 步骤 2.1 打开curl-7.32.0\

Weblogic12c安装与配置详解

Weblogic是什么Weblogic的安装Weblogic创建域Weblogic管理域Weblogic的应用Weblogic是什么 Weblogic这是我入职以后第一次接触到的词汇,我很陌生,就从我的角度来讲,我需要知道Weblogic是什么.干吗用的,然后才继续深入的学习怎么使用它.WebLogic是美商Oracle的主要产品之一,系购并得来.是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 目前

DenyHosts 安装及配置详解

http://moo1985.blog.51cto.com/401365/290662 http://www.lllusion.com/?p=437 DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能. 下面进入主题. 1.安装脚本 要求安装服务器能上网,并建立 /workspace目录 ###########################

vsftpd2.3.2安装、配置详解

一.vsftpd 简介     Vsftpd是一个基于GPL发布的类UNIX系统的ftp服务器软件.其全称是Very Secure FTP Deamon,在安全性.速度和稳定性都有着不俗的表现.在安全性方面,vsftpd针对程序的权限来设计,以一般身份启动服务,对Linux系统的使用 权限较低:在千兆以太网上,vsftpd的速度可以达到86MB/s:在稳定性上更是优秀,资料表明,完全工作24小时,传输数据达2.6TB,平均并发 连接为1500用户,峰值达4000用户,而这些还是在单机上实现的.此

Nginx虚拟主机配置详解

Nginx虚拟主机配置详解 一.虚拟主机介绍 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW.FTP.Email等),同一台主机上的虚拟主机之间是完全独立的.从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样. 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器.

MySQL5.6 数据库主从同步安装与配置详解(Master/Slave)

MySQL5.6 数据库主从同步安装与配置详解(Master/Slave)本篇文章主要介绍了MySQL5.6 数据库主从同步安装与配置详解,具有一定的参考价值,有兴趣的可以了解一下.安装环境 操作系统 :CentOS 6.5 数据库版本:MySQL 5.6.27 主机A:192.168.1.1 (Master) 主机B:192.168.1.2 (Slave) 这里强调的数据库的版本,是因为MySQL在5.6之前和之后的安装方式是不一样的. 本人在进行配置的时候,也遇到了这个坑,这里提前说明,希望