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加密功能
[root@svr5 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>

防盗链语句
location ~*.(gif/jpg/png/swf/flv)${
valid_referers none blocked www.baidu.com;
if($invalid_referer) {
rewrite ^/ http://www.baidu.com/40x.html;

}


     本文转自夜流璃雨 51CTO博客,原文链接:http://blog.51cto.com/13399294/2059239,如需转载请自行联系原作者




相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
163 0
|
25天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
39 0
|
2天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
7天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器
|
28天前
|
存储 弹性计算 监控
ecs配置与优化
阿里云ECS优化涉及实例规格选择、磁盘存储、网络配置、OS及软件优化、连接数管理、监控自动化和升级扩展。选择合适实例类型、磁盘类型以满足I/O需求,优化网络带宽与安全组规则,保持操作系统更新并调整软件配置。注意监控关键指标,利用弹性伸缩适应业务变化,适时升级资源,实现性能与成本的最佳平衡。
23 3
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
2月前
|
网络协议 Unix 应用服务中间件
如何进行 Nginx HTTPS服务器搭建
【2月更文挑战第6天】
63 0
|
2月前
|
负载均衡 JavaScript 应用服务中间件
强大的WEB服务器-Nginx
强大的WEB服务器-Nginx
29 0
|
2月前
|
弹性计算 网络安全
幻兽帕鲁服务器搭建实践及优化经验分享
Pocketpair出品的生存类游戏《幻兽帕鲁》最近非常火,最高在线人数已逼近200万,是有可能打破CSGO和PUBG记录的一款现象级游戏。官方服务器亚历山大,游戏开发商也提供了搭建私人专用服务器的方案,既可以保证稳定的游戏体验,也可以和朋友一起联机游戏,而且还能自定义经验翻倍等游戏里的一些选项。 那么如何快速拥有一个可以跟小伙伴们愉快玩耍的服务器呢?本文将为您详细介绍如何在阿里云上快速搭建幻兽帕鲁联机服务器。您只需按照页面提示选择相关配置,即可实现以下步骤的自动化:服务器创建、网络端口设置、防火墙配置以及游戏环境安装。整个过程仅需2-3分钟,即可轻松完成,无需手动配置。
|
2月前
|
Kubernetes 应用服务中间件 nginx
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器

热门文章

最新文章