资讯专栏INFORMATION COLUMN

nginx安装配置|nginx负载均衡|nginx反向代理|gzip压缩|expires缓存

pkhope / 3395人阅读

摘要:是一款轻量级的服务器反向代理服务器及电子邮件代理服务器,并在一个协议下发行。是以反向代理的方式进行负载均衡的。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好

模块依赖性

gzip模块需要 zlib 库
rewrite模块需要 pcre 库
ssl 功能需要openssl库

安装PCRE库

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.tar.gz 
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install

安装zlib库

wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make && make install

安装ssl

自由选择是否需要编译

wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar -zxf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
./config
make && make install

安装nginx

cd nginx
./configure --prefix=/usr/local/nginx
make & make install

启动nginx

cd/usr/local/nginx
./sbin/nginx

配置nginx开机自动启动

打开/etc/rc.d/rc.local文件添加nginx文件路径

/usr/local/nginx/sbin/nginx

重启nginx

./sbin/nginx -s reload

查看访问日志

tail -10 logs/haowan.access.log

nginx设置定时分割日志文件

#!/bin/bash
LOGPATH=/usr/local/nginx/logs/haowan.access.log  // nginx日志原路径
BASEPATH=/date/$(date -d yesterday +%Y%m)  //切割后存放目录
mkdir -p $BASEPATH  //按月创建文件夹
bak=$BASEPATH/$(date -d yesterday +%d%H%M).haowan.access.log  //计算路径与日志命名
mv $LOGPATH $bak
touch $LOGPATH
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
添加cut_logs.sh执行权限

chmod +x /usr/local/nginx/date/cut_logs.sh
设置cut_logs.sh启动时间,执行命令crontab -e进入编辑状态:

01 00 * * * /usr/local/nginx/date/runlog.sh
可以用以下方式来执行此脚本:

/etc/init.d/nginx start
 /etc/init.d/nginx stop
 /etc/init.d/nginx reload
 /etc/init.d/nginx restart

nginx rewrite重写

nginx通过ngx_http_rewrite_module模块支持url重写、支持if条件判断,但不支持else。该模块需要PCRE支持,应在编译nginx时指定PCRE源码目录

判断浏览器类型

 if ($http_user_agent ~* Mozilla){
        rewrite ^.*$ /ie.html;
        break;
      }
    # 404错误页面
    if (!-e $document_root$fastcgi_script_name){
        rewrite ^.*$ /404.html;
        break;
    }
    if ($http_user_agent ~* Mozilla){
        set $isit 1;
    }
    if ($fastcgi_script_name  ie.html){
        set $isie 0;
    }
    if($isie 1){
       rewrite ^.*$ /ie.html
    }

php与nginx整合

注意:编译的php要有如下功能:连接mysql,gd,ttf, 以fpm(fascgi)方式运行。

./configure 
   --prefix=/usr/local/fastphp
   --with-mysql=/usr/local/mysql
   --with-gd
   --enable-gd-native-ttf
   --enable-gd-jis-conv
   --enable-fpm
  make && make install
复制php配置文件

cp php.ini-development /usr/local/fastphp/lib/php.ini
复制 php-fpm配置文件

cp etc/php-fpm.conf.default  etc/php-fpm.conf
启动php-fpm

./sbin/php-fpm

查看进程

ps aux | grep php

设置nginx.conf文件

php与nginx整合

location ~ .php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;
    include        fastcgi_params;
}

nginx gzip压缩提升网站速度

网页压缩是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,所幸的是现在流行的浏览器都是支持的,包括 IE、FireFox、Opera 等;服务器有 Apache 和 IIS 等。双方的协商过程如下:首先浏览器请求某个 URL 地址,并在请求的头 (head) 中设置属性 accept-encoding 值为 gzip, deflate,表明浏览器支持 gzip 和 deflate 这两种压缩方式(事实上 deflate 也是使用 gzip 压缩协议。

gzip常用参数:

gzip on|off  #是否开启gzip
gzip_buffers 32 4k|16 8k  #缓冲
gzip_comp_level[1-9]  #推荐6压缩级别
gzip_disable  #正则匹配UA 什么样的Uri不进行gzip
gzip_min_length 200  #开始压缩的最小长度(再小就不要压缩了)
gzip_http_version1.0|1.1  #开始压缩的http协议版本
gzip_proxied  #设置请求代理服务器该如何缓存内容
gzip_types text/plain application/xml  #对哪些类型的文件用压缩如:text/xml/html/css
gzip_vary on|off  #是否传输gzip压缩标志
nginx gzip压缩设置

gzip on;
gzip_buffers 32 4k;
gzip_comp_level 6;
gzip_min_length 2000;
gzip_types text/css text/xml application/x-javascript;
nginx的expires缓存设置提高网站性能

Nginx设置expires设定页面缓存时间 不缓存或一直使用缓存 配置expires expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求

 location ~* .(jpg|jpeg|gif|png){
  root html;
  expires 1d;  # 缓存一天
 }

反向代理实现 nginx+apache动静分离

nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。支持两个用法 proxy与upstream,分别用来做反向代理和负载均衡

 #配置apache虚拟主机 
    
        ServerAdmin webmaster@dummy-host2.example.com
        DocumentRoot "/usr/local/nginx/html"
        ServerName "192.168.80.22"
        ErrorLog "logs/dummy-host2.example.com-error_log"
        CustomLog "logs/dummy-host2.example.com-access_log" common
    
#设置权限
 
   Options FollowSymLinks
   AllowOverride None
   Order deny,allow
   Allow from all
 
设置nginx配置文件 .php文件让apache来解析

 location ~ .php$ {
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass   http://192.168.80.22:8080;
      
 }

nginx负载均衡配置

*nginx负载均衡主要是对七层网络通信模型中的第七层应用层上的http、https进行支持。同时nginx更新版本也在逐步对Websocket、SPDY等协议作出支持。
nginx是以反向代理的方式进行负载均衡的。反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。*

配置两台虚拟机

  server{
     listen 81;
     server_name 127.0.0.1;
     root html;
     access_log logs/81-access.log main;
   }
   server{
       listen 82;
       server_name 127.0.0.1;
       root html;
       access_log logs/82-access.log main;
   }

把多台服务器用upstream指定绑定在一起并起个组名

upstream imgserver{
  server 127.0.0.1:81 weight=1 max_fails=2 fail_timeout=3;
  server 127.0.0.1:82 weight=1 max_fails=2 fail_timeout=3;
 }

然后用proxy_pass 指向imgserver

 location ~* .(jpg|jpeg|gif|png){
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://imgserver;
 }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39667.html

相关文章

  • 前端nginx使用札记

    摘要:它是一个高性能的和反向代理服务器,同时也可以作为的代理服务器。如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用反向代理。 nginx是什么? nginx是俄罗斯人 Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的一个十分轻量级的HTTP服务器。它是一个高性能的HTTP和反向代理服务器,同时也可以作为IMAP/POP3/SMTP的代理服务器。ngi...

    tianren124 评论0 收藏0
  • Nginx

    摘要:主进程不直接响应浏览器,是管理子进程使用。浏览器访问会到子进程中响应。日志需要备份,文件在被进程所打开,不能使用命令。是设置变量使用,可以达到多条件判断时做标记使用。 nginx 简介 高性能WEB服务器 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.Nginx 是由Igor Sysoev为落实访问量第二...

    luck 评论0 收藏0
  • Nginx

    摘要:主进程不直接响应浏览器,是管理子进程使用。浏览器访问会到子进程中响应。日志需要备份,文件在被进程所打开,不能使用命令。是设置变量使用,可以达到多条件判断时做标记使用。 nginx 简介 高性能WEB服务器 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.Nginx 是由Igor Sysoev为落实访问量第二...

    hikui 评论0 收藏0
  • Nginx配置文件学习笔记

    摘要:配置文件学习笔记定义运行的用户和用户组进程数,建议设置为等于总核心数全局错误日志定义类型,进程文件指定进程可以打开的最大描述符数目工作模式与连接数上限这个指令是指当一个进程打开的最多文件描述符数目,理论值应该是最多打开文件数与进程数相除, Nginx配置文件学习笔记 定义Nginx运行的用户和用户组 user nginx; Nginx进程数,建议设置为等于CPU总核心数 worker...

    muddyway 评论0 收藏0
  • Nginx配置文件学习笔记

    摘要:配置文件学习笔记定义运行的用户和用户组进程数,建议设置为等于总核心数全局错误日志定义类型,进程文件指定进程可以打开的最大描述符数目工作模式与连接数上限这个指令是指当一个进程打开的最多文件描述符数目,理论值应该是最多打开文件数与进程数相除, Nginx配置文件学习笔记 定义Nginx运行的用户和用户组 user nginx; Nginx进程数,建议设置为等于CPU总核心数 worker...

    MoAir 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<