浅谈Nginx服务器的安装,升级配置LNMP平台搭建nginx+fastcginginx高级技术-地址重写及优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈Nginx服务器的安装,升级配置LNMP平台搭建nginx+fastcginginx高级技术-地址重写及优化相关的知识,希望对你有一定的参考价值。
nginx服务器:是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器
一、安装Nginx软件:
准备工作:搭建gcc、pcre-devel、openssl-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 IP:80; //基于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_timeout:max_fails次失败后,暂停提供服务的时间
backup:备份服务器
四、LNMP平台搭建(L:Linux操作系统 N:Nginx网站服务软件 M:mysql、MariaDB数据库 P:网站开发语言(php、Perl、Python))
第一步:装Nginx、mariadb、mariadb-server、mariadb-devel、php、php-mysql、php-fpm
yum -y install mariadb、mariadb-server、mariadb-devel、php、php-mysql
yum localinstall php-fpm....rpm
第二步:起nginx、mariadb、php-fpm服务
nginx -c /usr/local/nginx/conf/nginx.conf systemctl start mariadb、php-fpm
第三步:查看nginx、mariadb、php-fpm服务状态
nginx:netstat -antpul | grep 80
mariadb:netstat -antpul | grep 3306
php-fpm:netstat -antpul | grep 9000
五、Nginx+FastCGI
FastCGI简介:是一种常驻型的CGI,将CGI解释器进程保持在内存中,进行维护与调度,FastCGI技术目前支持语言有PHP、C/C++、Java、Perl、Python、Ruby等
工作原理:(进入nginx主配置文件/usr/local/nginx/conf/nginx.conf配置容器设置)
1,Web Server启动时载入FastCGI进程管理器
2,FastCGI进程管理器初始化,启动多个解释器进程
3,当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个解释器
4,FastCGI子进程完成处理后返回结果,将标准输出和错误信息从同一连接返回Web Server
FastCGI缺点:内存消耗大,因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7~25兆内存,将这个数字乘以50或100就是很大的内存数;Nginx+PHP(FastCGI)服务器在3万并发连接下开10个Nginx进程消耗150M内存(10*15M),开64个php-cgi进程消耗1280M内存(20M*64)
六、Nginx高级技术-地址重写
地址重写:获得一个来访的URL请求,然后改写成服务器可以处理的另一个URL的过程
地址重写好处:缩短URL,隐藏实际路径提高安全性,易用户记忆和键入,搜索引擎收录
常见网站应用场景:当网站文件移动或文件目录名称发生改变,出于SEO需要,你需要保持旧的URL,网站改版了,网站导航和链接发生变化,为了继续持有原链接带来的流量,需要保持旧的URL
rewrite语法:rewrite 旧地址 新地址 flag(break、last、redirect、permanent)
break:停止执行其他的重写规则,完成本次请求
last:停止执行其他重写规则,根据URL继续搜索其他location,地址栏不改变
redirect:302临时重定向,地址栏改变,爬虫不更新URL
permanent:301永久重定向,地址栏改变,爬虫更新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天
}
}
以上是关于浅谈Nginx服务器的安装,升级配置LNMP平台搭建nginx+fastcginginx高级技术-地址重写及优化的主要内容,如果未能解决你的问题,请参考以下文章