浅谈Nginx服务器的安装,升级、配置、LNMP平台搭建、nginx+fastcgi、nginx高级技术-地址重写及优化

Nginx服务器:是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器

一、安装Nginx软件:

准备工作:搭建gccpcre-developenssl-devel环境       yum  -y  install  gcc  gcc-c++  make  pcre-devel  openssl-devel

第一步:创建nginx用户  useradd  nginx

第二步:解压nginx    tar  -zxvf  nginx....tar.gz

第三步:进目录清单配置cd  nginx...------>./configure

常用参数:--prefix=/usr/local/nginx   //指定安装目录--with-http_ssl_module //指定安全加密

第四步:编译及安装  make  &&  make  install

安装完成之后就会有Nginx安装目录:/usr/local/nginx/,这个目录下会有主配置文件、网页目录、日志文件和启动脚本

主配置文件:/usr/local/nginx/conf/nginx.conf  网页目录:/usr/local/nginx/html/(可自定义)

日志文件:/usr/local/nginx/logs 启动脚本:/usr/local/nginx/sbin/nginx

启动nginx服务:/usr/local/nginx/sbin/nginx  -c  /usr/local/nginx/conf/nginx.conf

常用选项:-v查看nginx版本   -V查看编译参数    -t测试默认配置文件    -c指定配置文件   -s停止nginx服务(接reload重新加载主配置文件)

启动完服务之后查看服务相关进程及端口信息   ps  aux  |  grep  nginx      或者      netstat  -autpul   |  grep  nginx

 

二、在不停止服务的情况下平滑升级Nginx

第一步:解压新nginx包,删除源解压包    tar  -zxvf  nginx....tar.gz

第二步:进目录清单配置cd  nginx...------>./configure  

常用参数:--prefix=/usr/local/nginx //指定安装目录     --with-http_ssl_module //指定安全加密

第三步:编译  make

第四步:将老nginx脚本改名并拷贝新的nginx脚本进来

1)mv  /usr/local/nginx/sbin/nginx  nginxold

2)cp  nginx  /usr/local/nginx/sbin/

第五步:在目录升级软件并查看  

1)make  upgrade  

2)/usr/local/nginx/sbin/nginx  -v

 

三、Nginx配置

整个nginx配置文件的结构是:http{ server{ location / {} } }

nginx配置文件里的全局选项:

user  nginx;  //进程所有者

worker_processes  1;  //启动进程数量

error_log  /var/log/nginx/error.log;  //日志文件

pid  /var/run/nginx.pid;  //PID文件

events {

worker_connections  1024;  //单个进程最大并发量

}

nginx配置文件里的配制容器:

http{

server{   //定义虚拟主机

listen  80;

server_name  localhost;   

location  /  {

root  html; //网页根目录

index  index.html  index.htm;     //网页文件

}

}

}

nginx用户认证:

第一步:修改nginx主配置文件/usr/local/nginx/conf/nginx.conf,在配置容器下添加参数

第二步:在命令行创建用户名密码htpasswd  -cm  /usr/local/nginx/pass.txt  用户名

(需安装httpd-tools包,第二次创建用户名时无需-c,否则会覆盖)yum -y install httpd-tools

Nginx虚拟主机配置

三种模式虚拟主机:基于域名、端口、IP的虚拟主机

http{

server{   //定义虚拟主机

listen  80; //基于端口

#listen  IP80 //基于IP

server_name  localhost;   //基于域名

location  /  {

root  html; //网页根目录

index  index.html  index.htm;     //网页文件

}

}

}

SSL虚拟主机配置(SSL加密网站的核心技术是非对称生成密钥)

部署SSL虚拟机主机:

第一步:进入/usr/local/nginx/conf目录生成私钥(自定义)

openssl  genrsa  >  my.key  或者  openssl  genrsa  -out  my.key  2048

第二步:进入/usr/local/nginx/conf/目录生成证书(自定义)

openssl  req  -new  -x509  -key  my.key  -out  my.crt

第三步:修改配置文件/usr/local/nginx/conf/nginx.conf,添加证书密钥参数

 

Nginx反向代理配置(在nginx主配置文件配置容器里指定)

Nginx负载分配方式配置:目前支持4种分配方式

轮询(默认的):逐一循环调度,比例1:1

Weight:指定轮询几率,权重值和访问比率成正比

ip_hash:根据客户端IP分配固定的后端服务器

服务器组主机状态配置:

down:表示当前server暂时不参与负载

max_fails:允许请求失败的次数(默认为1

fail_timeoutmax_fails次失败后,暂停提供服务的时间

backup:备份服务器

 

 

四、LNMP平台搭建(LLinux操作系统  NNginx网站服务软件 MMySQLMariaDB数据库  P:网站开发语言(PHPPerlPython))

第一步:装Nginxmariadbmariadb-servermariadb-develphpphp-mysqlphp-fpm

yum  -y  install  mariadbmariadb-servermariadb-develphpphp-mysql

yum  localinstall  php-fpm....rpm

第二步:起nginxmariadbphp-fpm服务

nginx  -c  /usr/local/nginx/conf/nginx.conf      systemctl  start  mariadbphp-fpm

第三步:查看nginxmariadbphp-fpm服务状态

nginxnetstat  -antpul  |  grep  80

mariadbnetstat  -antpul  |  grep  3306

php-fpmnetstat  -antpul  |  grep  9000

 

五、Nginx+FastCGI

FastCGI简介:是一种常驻型的CGI,将CGI解释器进程保持在内存中,进行维护与调度,FastCGI技术目前支持语言有PHPC/C++JavaPerlPythonRuby

工作原理:(进入nginx主配置文件/usr/local/nginx/conf/nginx.conf配置容器设置)

1Web Server启动时载入FastCGI进程管理器

2FastCGI进程管理器初始化,启动多个解释器进程

3,当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个解释器

4FastCGI子进程完成处理后返回结果,将标准输出和错误信息从同一连接返回Web Server

 

FastCGI缺点:内存消耗大,因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗725兆内存,将这个数字乘以50100就是很大的内存数;Nginx+PHPFastCGI)服务器在3万并发连接下开10Nginx进程消耗150M内存(10*15M),开64php-cgi进程消耗1280M内存(20M*64

 

六、Nginx高级技术-地址重写

地址重写:获得一个来访的URL请求,然后改写成服务器可以处理的另一个URL的过程

地址重写好处:缩短URL,隐藏实际路径提高安全性,易用户记忆和键入,搜索引擎收录

常见网站应用场景:当网站文件移动或文件目录名称发生改变,出于SEO需要,你需要保持旧的URL,网站改版了,网站导航和链接发生变化,为了继续持有原链接带来的流量,需要保持旧的URL

rewrite语法:rewrite  旧地址  新地址  flag(breaklastredirectpermanent)

break:停止执行其他的重写规则,完成本次请求

last:停止执行其他重写规则,根据URL继续搜索其他location,地址栏不改变

redirect302临时重定向,地址栏改变,爬虫不更新URL

permanent301永久重定向,地址栏改变,爬虫更新URL

应用示例:(修改nginx主配置文件/usr/local/nginx/conf/nginx.conf配置容器里的location参数,添加rewrite规则)

1,页面文件跳转 /a.html--------->/b.html

2,网站域名跳转 192.168.4.5---->www.baidu.com

写在location内对根文件夹生效,写在location外对所有文件生效

 rewrite  ^/(.*)  http://www.baidu.com/$1;   //网站域名跳转

3,不同的人访问相同的链接,出来的版式不一样,根据浏览器返回不同的页面

写在location内是死循环(报错http500),写在location外是正常

4,访问的资源不存在时,重定向到指定页面

if(!-e  $request_filename){

rewrite  ^/  http://域名/文件;

}

 

七、nginx优化

如何优化:修改nginx主配置文件(vim  /usr/local/nginx/conf/nginx.conf)

worker_processes  2; //CPU核心数量一致

error_log  /var/log/nginx.error_log  [debug/info/notice/warn/error/crit];  //定义日志级别

events{

worker_connections  65536; //每个worker最大并发连接数

//最大的连接数=CPU核心数量*最大并发连接数

//由于操作系统的文件数量未限制,需修改ulimit限制/etc/security/limits.conf

查看配置好的参数:ulimit  -a

临时限制:ulimit  -Hn/Sn   最大文件数量;    如ulimit  -Hn/Sn  100000;

永久限制:vim  /etc/security/limits.conf------->* hard/sort     nofile   100000

}

http{

server_tokens  off; //不显示Nginx具体版本号

client_header_buffer_size  1k;   //默认请求包头信息的缓存

large_client_header_buffers  4 4k(工作需要);  //大请求包头部信息的缓存个数与容量

//先根据client_header_buffer分配,如果不够,再根据large值分配

location  ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {

expires  30d;   //为客户端浏览器缓存数据30

}

}

posted @ 2017-10-25 16:08  醉卧情场君莫笑  阅读(1158)  评论(0编辑  收藏  举报