【云计算】nginx总结
小标 2018-12-05 来源 : 阅读 938 评论 0

摘要:本文主要向大家介绍了【云计算】nginx总结,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】nginx总结,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。


安装nginx,lnmp


在资源中有一个nginx的tar包,里面有nginx、lnmp的安装配置,还有一个blog详细分析了nginx、lnmp的安装脚本的编写,基本思路就是一个源码包的配置安装


解压,配置,编译,安装。


在配置中有些基本的配置数据:


--prefix=/usr/local/nginx 设置安装位置


--user=nginx 设置用户


--group=nginx 设置所属组


--with-http_ssl_module 设置需要的拓展模块(在tar包中有个mode的文件里面有所有的拓展模块)


升级nginx(如果要重新修改安装模块)


和安装差不多,不过,编译后,不能安装,而是把objs下的程序拷贝到nginx/sbin下即可,资源包中的nginx_install会自动监测是否安装了,没有安装的话会自动进行升级操作。


lnmp的配置


lnmp是四个服务的合称,分别是linux、nginx、mariadb、php


nginx


其配置文件:/usr/local/nginx/conf/nginx.conf


nginx的虚拟主机


在主配置文件的http中每个server都是一个虚拟主机


http{


server{代表一个虚拟主机的配置


listen 80;代表该虚拟主机的接口


server_name www.localhost.com;代表域名


root html;地址库(可以是相对位置,可以是绝对路径,相对位置是再nginx安装位置找)


}


}


nignx可以作安全的web网站,在一个虚拟网站server中


listen 443 ssl;


server_name 域名;


ssl_certificate cert.pem; #这里是证书文件


ssl_certificate_key cert.key; #这里是私钥文件


nginx的动静分离


原理很简单,就算把php结尾的文件单独处理,不过要安装php相关的包,再php中在详细解释


location ~ \.php$ {# 可以理解成if或者case,他就是当匹配后面的正则表达式的时候执行下面语句


root html;# documentroot,网站根目录的位置


fastcgi_pass 127.0.0.1:9000;# 这个的意思就是php文件给谁解释,一般php解释器是本机的9000端口


fastcgi_index index.php;# 默认没有写文件的时候,打开的网页


fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;


include fastcgi_params;


}


nginx的地址重写技术


rewrite 旧地址 新地址 [选项]


last 不再读其他rewrite,作用是让地址重写,匹配即停止


break 不再读其他语句,结束请求,匹配rewrite后,下面所有的语句全部不执行


redirect 临时重定向,实现跳转地址栏,就是会让客户端的地址栏中的地址也会变化,


注意:不能修改/地址的时候用这个选项会导致一个无线循环调转,因为新地址中也一定有/导致,根一直在循环调转


permament 永久重定向


域名重写: rewrite ^/(.*) 新域名地址$1


nginx的调度


基本格式:


upstream 集群名 # 定义集群,然后调度


{


server ip 配置属性;# 集群配置,让什么ip加入集群中


}


server{


listen 监听的端口;


proxy_pass 集群名;# 调用上面定义的集群


}


一个是网站的调度


直接在http内用upstream创建集群,在server里面调度,不过proxy_pass //集群名,集群名前要加http


另一个是TCP/IP四层的调度


需要安装相关的模块--with-stream,然后在http外面写一个stream里面写基本格式即可


不过如果是数据库的调度代理,需要注意mariadb不允许root远程登陆,所以要创建用于远程登陆的用户并赋权


nginx的优化


1. 设置登陆的账户和密码


先要创建密码文件装包:httpd-tools


用相关命令:如果是第一次新建就加-c,如果是网文件中写就不要-c,回车后输入密码


htpasswd [-c] 密码文件位置 用户


再修改主配置文件:


auth_basic "Input your name and password:"; # 密码输入前的提示信息


auth_basic_user_file "/usr/local/nginx/pass"; # 密码文件的位置


2. 为了提高安全性,网站不显示nginx的版本号,修改nginx主配置文件http


server_tokens off;


再修改nginx/conf/fastcgi.conf中的显示内容,把SERVER_SOFTWARE这行后面的内容修改了


fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;


修改成


fastcgi_param SERVER_SOFTWARE nginx;


3. 修改nginx的CPU和并发连接数,(升级后还需要修改内核的限制才有用)修改nginx配置文件:


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


events{


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


use epoll;//使用较优算法


}


4. 调整内核,其中硬链接限制软连接,软连接限制连接个数,这是修改系统配置


ulimit -Hn 100000 # 临时调整硬链接


ulimit -Sn 100000 # 临时调整软链接


永久修改要改配置文件/etc/security/limits.conf


下面那几行,分别代表:


对什么生效 ,格式(soft软,hard硬 ),需要限制的项目,限制的值


#


5. 修改nginx的内存占比,修改nginx的主配置文件的htpp即可


include mime.types;


default_type application/octet-stream;


client_header_buffer_size 1k;# 修改默认开启的缓存大小


large_client_header_buffers 4 4k;# 默认缓存不够时,开启


6. 配置缓存的保留时间长短,不常修改的文件让客户端缓存起来,这也是修改nginx配置的server即可


server {


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


expires 30d; //定义客户端缓存时间为30天


}


}


7. 编写错误信息的提示页面,提高用户满意度,修改nginx配置文件的http即可


error_page 错误序号1 错误序号2 …… /文件路径和目录


错误编号 含义


200 正常


301 永久重定向


302 临时重定向


304 重定向到本机,指的缓存信息


401 用户名和密码错误


403 禁止访问,也就是IP被拒绝访问了


404 文件不存在


414 请求的URI地址栏太长


500 服务器内部错误


502 集群中,调度器无法和后台服务器链接,也就是集群有问题


8. 可以实时查看服务器的状态,修改nginx配置的server即可


location /status {


allow 允许查看的IP地址;


deny all; # 除了允许的IP,全部拒绝


stub_status on;


}


其中客户端可以访问 域名/status 实现远程查看服务器情况


Active connections 当前活动的连接数量。


Accepts 已经接受客户端的连接总数量。


Handled 已经处理客户端的连接总数量(一般与accepts一致,除非服务器限制了连接数量)。


Requests 客户端发送的请求数量。


Reading 当前服务器正在读取客户端请求头的数量。


Writing 当前服务器正在写响应信息的数量。


Waiting 当前多少客户端在等待服务器的响应。


9. 页面压缩,修改nginx配置的server即可


gzip on; //开启压缩


gzip_min_length 最小文件大小、字节数; //小文件不压缩


gzip_comp_level 压缩比例、是一个整数; //压缩比率


gzip_types 压缩文件类型1 压缩文件类型2; //对特定文件压缩,类型参考/etc/mime.types


10. 服务器运用内存进行缓存,修改nginx配置的server即可


open_file_cache max=最大多少缓存内容 inactive=多少时间没有请求就关闭这缓存数据;


open_file_cache_valid 多少时间强制刷新缓存;


open_file_cache_min_uses 被请求多少次才会被缓存;


open_file_cache_errors off; # 关闭缓存报错,如果缓存出错,直接取硬盘找,不需要其报错


PHP


其是一个有很多模块组成的程序,连接每个类型数据库都要不同的模块,


如果要连接mariadb需要安装php php-mysql php-fpm-5.4.16-42.el7.x86_64.rpm(在资源的nginx的tar包中有软件包)


其配置文件: /etc/php-fpm.d/www.conf


[www]


listen = 127.0.0.1:9000 //PHP的IP和端口号


pm.max_children = 32 //最大进程数量


pm.start_servers = 15 //最小进程数量


pm.min_spare_servers = 5 //最少需要几个空闲着的进程


pm.max_spare_servers = 32 //最多允许几个进程处于空闲状态


再看其连接mariadb的基本文件类型


query($sql);# 进行数据库命令操作


>


mariadb


装包:mariadb mariadb-server mariadb-devel


服务:mariadb


准备数据库,赋予一个用户权限后,让服务器可以远程访问


然后,基本的数据库数据的调度都是通过php完成的


nginx最终主配置文件:


#user nobody;


worker_processes 4; # 尽量与CPU核心数一致


#error_log logs/error.log; # 记录错误信息的日志文件


#error_log logs/error.log notice;


#error_log logs/error.log info;


#pid logs/nginx.pid; # 记录nginx的当前进程的文件


events {


worker_connections 1024; # 每个worker最大并发连接数


use epoll; # 使用较优算法


}


stream { # 对于TCP/IP的调度,需要拓展模块--with-stream


upstream 集群名 {


server IP:段口号; # 后端SSH服务器的IP和端口


}


server {


listen 监听的段口号; # Nginx监听的端口


proxy_pass 集群名;


}


}


http {


include mime.types;


default_type application/octet-stream;


open_file_cache max=最大多少缓存内容 inactive=多少时间没有请求就关闭这缓存数据;


open_file_cache_valid 多少时间强制刷新缓存;


open_file_cache_min_uses 被请求多少次才会被缓存;


open_file_cache_errors off; # 关闭缓存报错,如果缓存出错,直接取硬盘找,不需要其报错


client_header_buffer_size 1k;# 修改默认开启的缓存大小


large_client_header_buffers 4 4k;# 默认缓存不够时,开启的最大内存个数和每个内存部分存的大小


sendfile on;


server_tokens off; # 为了安全,不显示nginx版本号


keepalive_timeout 65;


upstream webs {


server 192.168.2.100:80;


server 192.168.2.200:80;


}


gzip on; # 开启页面压缩


gzip_min_length 最小文件大小、字节数; # 小文件不压缩


gzip_comp_level 压缩比例、是一个整数; # 压缩比率


gzip_types 压缩文件类型1 压缩文件类型2; # 对特定文件压缩,类型参考/etc/mime.types(左列是压缩类型,右列是指相关文件后缀名)


server { # 代表一个虚拟主机的配置


listen 80; # 监听端口


server_name 域名1; # 设置的域名信息


auth_basic "Input your name and password:"; # 密码输入前的提示信息


auth_basic_user_file "/usr/local/nginx/pass"; # 密码文件的位置


#charset koi8-r;


upstream 集群名 # 定义集群,然后在server虚拟主机中调度


{


server ip1 配置属性;# 集群配置,让什么ip加入集群中,配置属性有weight权重,max_fails失败次数,fail_timeout超时时间,down关机,具体查看day3


server ip2 weight=1 max_fails=1 fail_timeout=120;


ip_hash;# 根据哈希取余算法进行分配,一条配置就完成了哈希取余算法调配的所有操作,具体的IP哈希取余法查看day3


}


#access_log logs/host.access.log main;


if ($http_user_agent ~* 浏览器名称) { # 识别客户端浏览器


rewrite ^(.*)$ /自定义的网页目录/$1;


} # 如果是要求的浏览器,则进行地址重写


rewrite /被重写地址 /重写地址 选项; # 把所有想要重写的地址进行重写操作,其选项有last,break,redirect临时,permament永久,具体内容请查看day2


location / {


proxy_pass //集群名; # 调度给其他web服务器


root html; # 根目录文件所在位置


}


location /status {


allow 允许查看的IP地址;


deny all; # 除了允许的IP,全部拒绝


stub_status on;


}


error_page 404 /404.html; # 编写404错误的页面内容


error_page 500 502 503 504 /50x.html; # 编写50*错误页面的内容


# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000


location ~ \.php$ {# 可以理解成if或者case,他就是当匹配后面的正则表达式的时候执行下面语句


root html;# documentroot,网站根目录的位置


fastcgi_pass 127.0.0.1:9000;# 这个的意思就是php文件给谁解释,一般php解释器是本机的9000端口


fastcgi_index index.php;# 默认没有写文件的时候,打开的网页


include fastcgi.sconf;


}


}


}


# another virtual host using mix of IP-, name-, and port-based configuration


server { # 另外一个web服务器


listen 80;


server_name 域名2;


location / {


root html;


index index.php index.html index.htm; # 没有写文件的时候默认查看的文件,从前往后依次找


}


}


# HTTPS server


server { # 这是安全的web网站


listen 443 ssl;


server_name 域名;


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;


}


}


server { # 把不常改变的文件内容让客户端进行缓存


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


expires 30d; //定义客户端缓存时间为30天


}


}


}


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved