小标
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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号