nginx服务器及优化

nginx服务器
作用:是一个高性能的HTTP和反向代理服务器,同时也是一个
IMAP/POP3/SMTP代理服务器。

Nginx配置文件及目录:
/usr/local/nginx 安装目录
-conf/nginx.conf 主配置文件
-html 网页目录
-logs 日志文件
-sbin/nginx 启动脚本

/usr/local/nginx/sbin/nginx –v 查看Nginx版本

/usr/local/nginx/sbin/nginx –V 查看编译参数

/usr/local/nginx/sbin/nginx –t 测试默认配置文件

/usr/local/nginx/sbin/nginx –c conf/nginx.conf 指定配置文件

查看服务相关进程及端口信息
ps aux |grep nginx

netstat -lnatpu |grep nginx

步骤一:构建Nginx服务器
1)使用源码包安装nginx软件包
yum –y install gcc pcre-devel(支持正则) openssl-devel (支持加密网站) //安装常见依赖包
useradd –s /sbin/nologin nginx 创建nginx用户
tar -xf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure \
--prefix=/usr/local/nginx \ //指定安装路径
--user=nginx \ //指定用户
--group=nginx \ //指定组
--with-http_ssl_module //开启SSL加密功能
make && make install //编译并安装

2)nginx命令的用法
/usr/local/nginx/sbin/nginx //启动服务
/usr/local/nginx/sbin/nginx -s stop //关闭服务
/usr/local/nginx/sbin/nginx -s reload //重新加载配置文件
/usr/local/nginx/sbin/nginx –V //查看软件信息

nginx服务默认通过TCP 80端口监听客户端请求:
netstat -anptu | grep nginx

3)为Nginx Web服务器建立测试首页文件
Nginx Web服务默认首页文档存储目录为/usr/local/nginx/html/,在此目录下建立一个名为index.html的文件:
touch /usr/local/nginx/html/index.html

步骤二:升级Nginx服务器
1)编译新版本nginx软件
tar -zxvf nginx-1.9.0.tar.gz
cd nginx-1.9.0
./configure \
--prefix=/usr/local/nginx \ //指定安装路径
--user=nginx \ //指定用户
--group=nginx \ //指定组
--with-http_ssl_module //开启SSL加密功能
make

2) 备份老的nginx主程序,并使用编译好的新版本nginx替换老版本
mv /usr/local/nginx/sbin/nginx >/usr/local/nginx/sbin/nginxold
cp objs/nginx /usr/local/nginx/sbin/ //拷贝新版本
make upgrade //升级
/usr/local/nginx/sbin/nginx –v //查看版本

步骤三:客户端访问测试
1)分别使用浏览器和命令行工具curl测试服务器页面
firefox http://192.168.4.5
curl http://192.168.4.5

用户认证
访问Web页面需要进行用户认证
用户名为:tom,密码为:123456
通过Nginx实现Web页面的认证,需要修改Nginx配置文件,在配置文件中添加auth语句实现用户认证。最后使用htpasswd命令创建用户及密码即可。
步骤一:修改Nginx配置文件
1)修改/usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
auth_basic "Input Password:"; 认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; 认证密码文件
location / {
root html;
index index.html index.htm;
}
}

2)生成密码文件,创建用户及密码
使用htpasswd命令创建账户文件,需要确保系统中已经安装了httpd-tools。
yum -y install httpd-tools
htpasswd -cm /usr/local/nginx/pass tom 创建密码文件
New password: 123456
Re-type new password: 123456
htpasswd -m /usr/local/nginx/pass jerry 追加用户,不使用-c选项

3)重启Nginx服务
usr/local/nginx/sbin/nginx –s reload
请先确保nginx是启动状态才可以执行命令成功,否则报错

步骤二:客户端测试
1)登录192.168.4.100客户端主机进行测试
firefox http://192.168.4.5 //输入密码后可以访问

基于域名的虚拟主机

实现两个基于域名的虚拟主机,域名分别为www.aa.com和www.bb.com
对域名为www.aa.com的站点进行用户认证,用户名称为tom,密码为123456
修改Nginx配置文件,添加server容器实现虚拟主机功能;对于需要进行用户认证的虚拟主机添加auth认证语句。
步骤一:修改配置文件
1)修改Nginx服务配置,添加相关虚拟主机配置如下
vim /usr/local/nginx/conf/nginx.conf
.. ..
server { 定义虚拟主机
listen 80; 端口
server_name www.aa.com; 域名
auth_basic "Input Password:"; 认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; 认证密码文件
location / { 发布目录
root html; 指定网站根路径
index index.html index.htm;
}

}
… …
server {
listen 80;
server_name www.bb.com;
location / {
root www;
index index.html index.htm;
}
}

2)创建账户及密码
htpasswd –cm /usr/local/nginx/pass tom 创建账户密码文件

3)创建网站根目录及对应首页文件
mkdir /usr/local/nginx/www
echo "www" > /usr/local/nginx/www/index.html

4)重启nginx服务
/usr/local/nginx/sbin/nginx –s reload

步骤二:客户端测试
1)修改客户端主机192.168.4.100的/etc/hosts文件,进行域名解析
vim /etc/hosts
192.168.4.5 www.aa.com www.bb.com

2)登录192.168.4.100客户端主机进行测试
firefox http://www.aa.com 输入密码后可以访问
firefox http://www.bb.com 直接访问

SSL虚拟主机
域名为www.cc.com
该站点通过https访问
通过私钥、证书对该站点所有数据加密
源码安装Nginx时必须使用--with-http_ssl_module参数,启用加密模块,对于需要进行SSL加密处理的站点添加ssl相关指令(设置网站需要的私钥和证书)。

步骤一:配置SSL虚拟主机
1)生成私钥与证书
cd /usr/local/nginx/conf
openssl genrsa > cert.key 生成私钥
openssl req -new -x509 -key cert.key > cert.pem 生成证书

2)修改Nginx配置文件,设置加密网站的虚拟主机
vim /usr/local/nginx/conf/nginx.conf
… …
server { 定义虚拟主机
listen 443 ssl; 开启SSL
server_name www.cc.com;
ssl_certificate cert.pem; 指定证书文件
ssl_certificate_key cert.key; 指定私钥文件
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}

步骤二:客户端验证
1)修改客户端主机192.168.4.100的/etc/hosts文件,进行域名解析
vim /etc/hosts
192.168.4.5 www.cc.com www.aa.com www.bb.com

2)登录192.168.4.100客户端主机进行测试
firefox https://www.cc.com //信任证书后可以访问

Nginx反向代理
轮询(默认):逐一循环调度
Weight:指定循环几率,权重值和访问比率成正比
ip_hash:根据客户端ip分配固定的后端服务器
down:表示当前server暂停不参与负载
max_fails:允许请求失败的次数(默认为1)
fail_timeout:max_fails次失败后,暂停提供服务的时间
backup:备份服务器

后端做2台web服务器
Nginx采用轮询的方式调用后端Web服务器
两台Web服务器的权重要求设置为不同的值
最大失败次数为1,失败超时时间为30秒

例:使用4台RHEL7虚拟机,其中一台作为Nginx代理服务器,该服务器需要配置两块网卡,IP地址分别为192.168.4.5和192.168.2.5,两台Web服务器IP地址分别为192.168.2.100和192.168.2.200。客户端测试主机IP地址为192.168.4.100

步骤一:部署实施后端Web服务器
1)部署后端Web1服务器
后端Web服务器可以简单使用yum方式安装httpd实现Web服务,为了可以看出后端服务器的不同,可以将两台后端服务器的首页文档内容设置为不同的内容。
yum -y install httpd
echo "192.168.2.100" > /var/www/html/index.html
systemctl restart httpd

2)部署后端Web2服务器
yum -y install httpd
echo "192.168.2.200" > /var/www/html/index.html
systemctl restart httpd

步骤二:配置Nginx服务器,添加服务器池,实现反向代理功能
1)修改/usr/local/nginx/conf/nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver { 定义员服务器组
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}
.. ..
server {
listen 80;
server_name www.tarena.com;
location / {
proxy_pass http://webserver; 调用服务组
}
}

2)重启nginx服务
/usr/local/nginx/sbin/nginx –s reload

3)使用浏览器访问代理服务器测试轮询效果
curl http://192.168.4.5 //使用该命令多次访问查看效果

步骤二:配置upstream服务器集群池属性
1)设置失败次数,超时时间,权重
vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}
.. ..
server {
listen 80;
server_name www.tarena.com;
location / {
proxy_pass http://webserver;
}
}

2)重启nginx服务
/usr/local/nginx/sbin/nginx –s reload

3)使用浏览器访问代理服务器测试轮询效果
curl http://192.168.4.5 //使用该命令多次访问查看效果

4)设置相同客户端访问相同Web服务器
vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
ip_hash;
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}
.. ..
server {
listen 80;
server_name www.tarena.com;
location / {
proxy_pass http://webserver;
}
}

5)重启nginx服务
/usr/local/nginx/sbin/nginx –s reload

6)使用浏览器访问代理服务器测试轮询效果
curl http://192.168.4.5 使用该命令多次访问查看效果

Nginx优化主要从配置文件着手,常见优化参数如下:

worker_processes 与CPU核心数量一致
error_log 定义日志级别
worker_connections 每个worker最大并发连接数
server_tokens 服务器版本号信息
client_header_buffer_size 默认请求包头信息的缓存
large_client_header_buffers 大请求包头部信息的缓存个数与容量
error_page 404 自定义404错误页面

步骤一:构建Nginx服务器
1)源码安装Nginx软件
yum -y install gcc pcre-devel openssl-devel
useradd -s /sbin/nologin nginx
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure \
--prefix=/usr/local/nginx \ 指定安装路径
--user=nginx \ 指定用户
--group=nginx \ 指定组
--with-http_ssl_module 开启SSL加密功能
[[email protected] nginx-1.8.0]# make && make install 编译并安装

2)启用Nginx服务并查看监听端口状态
/usr/local/nginx/sbin/nginx
netstat -anptu | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10441/nginx

步骤二:优化前从客户机访问Nginx服务器测试
1)使用ab高并发测试
格式:ab -c并发数 -n总请求数 URL
ab –n 2000 –c 2000 http://192.168.4.5/
Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24) 提示打开文件数量过多

2)使用脚本测试长头部请求是否能获得响应
cat buffer.sh
chmod +x buffer.sh
./ buffer.sh
.. ..
<center><h1>414 Request-URI Too Large</h1></center> 提示头部信息过大

3)客户端使用浏览器访问不存在的页面
firefox http://192.168.4.5/tt.html //访问不存在的页面

步骤三:优化Nginx服务器
1)修改Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes 2; 与CPU核心数量一致
events {
worker_connections 65535; 每个worker最大并发连接数
use epoll;
}
http {
open_file_cache max=2000 inactive=20s; 设置服务器最大缓存2000个文件句柄,关闭20秒内无请求
open_file_cache_valid 60s; 文件句柄有效时间是60秒,60秒后过期
open_file_cache_min_uses 5; 访问次数超过5次才被缓存
sendfile on; 提升Nginx读文件性能
tcp_nodelay on; 关闭TCP缓存延迟发送数据
keepalive_timeout 10; 保持连接的超时时间
server_tokens off; 不显示nginx版本号信息
client_header_buffer_size 1k; 默认请求包头信息的缓存
large_client_header_buffers 4 4k; 大请求包头部信息的缓存个数与容量
gzip on; 解压
gzip_min_length 1000; 1000字节以上解压
gzip_comp_level 4;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
server {
listen 80;
server_name www.tarena.com;
location / {
root html;
index index.html index.htm;
}
location ~ .(jpg|jpeg|gif|png|css|js|ico|xml)$ { ~匹配正则 不区分大小写
expires 30d; 定义客户端缓存时间为30天
}
error_page 404 /40x.html; 自定义错误页面
location = /40x.html {
root html;
}
}
}

2)修改Linux操作系统最大打开文件数
通过修改/etc/security/limits.conf文件修改打开文件最大数量:
vim /etc/security/limits.conf

  • soft nofile 100000
  • hard nofile 100000
    ulimit –Hn 100000
    ulimit –Sn 100000

3)提前生成404错误页面,供测试使用:
vim /usr/local/nginx/html/40x.html
<h1>~~^^^Error^^^~</h1>

原文地址:http://blog.51cto.com/13399294/2059239

时间: 2024-10-13 13:25:07

nginx服务器及优化的相关文章

nginx 服务器并发优化

apache 提供的 ab 可以对服务器进行压力测试, 安装 ab:   apt-get install apache2-utils 安装完后,ab 在目录  /usr/bin/ 下的. 执行: ab -c 并发数 -n 请求数 请求的URL    如: ab -c 2000 -n 50000 http://192.168.137.47/    表示对 http://192.168.137.47/ 进行50000次请求,并发数为 2000 我运行的机器不是在 192.168.137.47 上,运

Nginx服务器性能优化配置

在大多数情况下,一个常规安装的nginx服务器对你的网站来已经是能很好地工作的了.然而,如果你真的想挤压出nginx的性能,你必须更深入 一些.在这时我们将解释Nginx的那些设置可以微调,以优化在处理大量客户端请求时的性能.需要注意一点的是这不是一个全面的微调指南,而是一个简单的 可以通过微调来提高性能设置的概述.请根据实际情况使用. 基本的 (优化过的)配置 我们这里要修改的唯一文件是nginx.conf,其中包含Nginx不同模块的所有设置.通常情况下你能够在服务器的/etc/nginx目

nginx服务器介绍,负载均衡,文件配置,内核优化

一.nginx服务器的介绍 nginx服务器是一个web服务器,有高性能,内存消耗比较低,具有反向代理功能,可以代理web和mail,还有负载均衡的功能,将用户的请求进行转发的real server服务器中 二.nginx安装 1.关闭防火墙和SELINUX service iptables stop chkconfig iptables off chkconfig iptables --list getenforce 2.在官网下载相关安装包 wget http://nginx.org/dow

vue-小爱ADMIN系列文章(二):微信微博等分享,国际化,前端性能优化,nginx服务器部署

最近在做我的小爱ADMIN后台管理系统,结合当前市场后台管理系统对相关功能的需求,我又开始新增了一些新的功能和组件,如分享功能组件,项目国际化功能:项目完成后,部署在nginx服务器,发现首次访问的速度特别慢,严重的影响了用户体验,因此,我又开始进行了一系列的前端性能优化;以及将优化后的项目部署到nginx服务器二级子目录的注意细节. 效果演示地址 github地址 分享功能 背景说明 用微信,微博等做网站的第三方登录及用微信和支付宝进行支付,都需要注册开发者账号和添加网站应用,比较麻烦.另外,

搭建Nginx服务器及深度优化(1)

博文大纲: 一.Nginx介绍二.搭建Nginx服务器三.Nginx服务的版本升级至1.2四.修改Nginx服务头部信息五.nginx主配置文件中 location选项的详解六.配置https访问Nginx七.开启Nginx访问认证 一.Nginx介绍 Nginx专为性能优化而开发,其最大的优点就是它的稳定性和低系统资源消耗,以及对http并发连接的高处理能力,单台物理服务器可支持20000~50000个并发请求,正是如此,大量提供社交网络.新闻资讯.电子商务及虚拟主机等服务的企业纷纷选择Ngi

Nginx 服务器性能Bug和优化方案(真实经历)

一.遇到的问题 1.问题:本应该是3个ffmpeg ,但是怎么会有5个ffmpeg出现? 2.Lua脚本问题,一直写入日志,导致有大量的日志,这里的错误日志是直接写进nginx的error.log 日志文件的 (1)日志文件 total 1.8G -rw-r--r-- 1 root root 11M May 9 21:47 access.log -rw-r--r-- 1 root root 3.1K May 9 21:46 error.log -rw-r--r-- 1 root root 705

Nginx Web服务优化

实验环境: 虚拟机 CentOS 6.8 Nginx基本安全优化 1.调整参数隐藏Nginx软件版本号信息 http { include  mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server_tokens off;   为关闭状态,不显示具体版本号 include extra/www.conf; include extra/bbs.conf; include ex

linux服务器分析优化

一.系统性能分析 1.系统的性能是指操作系统完成任务的有效性.稳定性和响应速度.操作系统完成任务与系统自身设置.网络拓扑结构.路由设备.路由策略.接入设备.物理线路有关.当linux服务器出现问题,应该从应用程序.操作系统.服务器硬件.网络环境等方面排查. 2.性能优化方案提供:影响系统性能最大的因素是应用程序和操作系统两个方面,因为这两个方面出现的问题隐藏性好,不易察觉,而其他方面出现的问题一般会立刻定位到.系统硬件:(1).当硬件属于物理故障,直接更换硬件:(2).硬件性能不满足需求,升级硬

linux 安装nginx服务器

LINUX安装nginx服务器 1.安装nginx所需要的依赖包 说明:如果没有安装以上的安装包可以按照以下的方式安装 2.上传nginx包 在ssh远程连接工具(本文使用的是Xshell 5)中输入rz后会提示选择软件包 3.解压nginx软件包 4.创建nginx用户 5.配置并安装nginx服务器 ./configure --prefix=/usr/local/nginx--user=nginx --group=nginx --with-http_stub_status_module &&a