NMP架构:Nginx+Mysql+php(python),Nginx官方(http://nginx.org),不支持java

比apache性能高,并发高,支持代理

访问原理:

客户访问--->nginx读取html文件传给客户端--->浏览器解释页面

    nginx模块化:安装时需要选择

依赖包:gcc、pcre、pcre-devel、zlib、zlib-devel、openssl、openssl-devel

Nginx配置文件及目录: (Nginx安装脚本)

/usr/local/nginx/ #安装目录

/usr/local/nginx/conf/nginx.conf #主配置文件,会有一份nginx.conf.default原始

/usr/local/nginx/html #网页文件,默认index.html

/usr/local/nginx/logs #日志文件

/usr/local/nginxs/sbin/nginx #启动脚本

nginx -s stop #停止服务

nginx -s reload #重新加载配置文件

-V #查看安装时使用了什么参数

java代码启动nginx javaweb nginx_缓存

 

配置主配置文件:(/usr/local/nginx/conf/nginx.conf)

用户认证:

auth_basic "Input pass:"; 添加两行到server代码块中,端口下一行,提示用户输入

auth_basic_user_file "/usr/local/nginx/pass"; #对比用户输入与文件,pss文件要创建

#yum -y install httpd-tools #安装

#htpasswd -cm /usr/local/nginx/pass 用户名 #使用软件生成pass文件,-c 会覆盖

> 密码

加密网站:

生成证书(公钥)和私钥:(加密算法:对称算法(AES,DES);非对称算法(RSA,DSA);信息摘要(md5,sha256,sha512))

nginx默认读取位置:/usr/local/nginx/conf

#openssl genrsa -out my.key #生成私钥

#openssl req -new -x509 -key my.key -out my.crt #通过私钥生成证书

依次问:国家(CN),省份,城市,公司名称,部门,主机,邮箱

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

取消https下server代码块的注释,

ssl_certificate my.crt; 证书

ssl_certificate_key my.key ; 私钥

注意:访问时,需要使用https,若无法访问,清楚浏览缓存,"md5sum file_name"信息摘要生成

虚拟主机:【基于域名,基于端口,基于iP:端口前加ip】ip访问,显示第一个

server{ 一个server代表一个虚拟主机
listen 80; 端口
server_name www.server.com; 域名
location / {
root html; #网页目录
index index.html index.htm #首页名
}
}

调度器(代理服务):(不作缓存,,web高可用,负载均衡)

upstream 集群名 { #添加在http代码块内,server代码块上
server web服务器ip;
server web服务器ip;
…… 
服务器ip后可用参数:
weight=数字  #权重 
max_fails=次数 fail_timeout=秒数 #尝试连接X次,若失败,则X秒后再次连接
down #标记宕机
ip_hash;#加在server语句上,相同客户访问相同服务器
} 
server {
listen 80;
server_name www.server.com;
location / {
proxy_pass http://集群名; 如果用户访问www.server.com则调度集群,而不是html中的
root html;
}
}

自带web检测,其中一个坏了,则不会访问,恢复后自动访问。

地址重写:(关键字写到location代码块外)

地址重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。

地址重写的优点:

  • 缩短url,隐藏实际路径提高安全性
  • 易于用户记忆和键入。
  • 易于被搜索引擎收录

       配置:

……

location / {
root html;
index index.html index.htm;
}
rewrite 旧的地址 新地址 [redirect]; 
#地址要使用"/file_name"格式,使用redirect选项,用户地址会显示新地址 ,默认不变,目录有变化时必须使用redirect,否则页面图片不能加载;
rewrite ^/ http://www.baidu.com;支持正则,跳转网站,不论访问什么,都转到百度
rewrite /(.*) http://www.baidu.com/$1 网站域名变化,目录不变,正则使用$1引用,

或者:不同用户,返回不同页面

if ($http_user_agent ~* firefox) { 使用if判断返回参数($http_user_agent)是否包含hirefox关键字,使用~*模糊匹配
rewrite ^/(.*) /firefox/$1; #任何页面都转到firefox目录下
}

注意:在重启服务时,会端口冲突,杀死进程在开。(netstat -nutlp | grep nginx)

优化:(/usr/local/nginx/conf/nginx.conf)

安全

server_tokens off; 不显示版本,要添加,在http代码块中

性能:

  • 客户端提示"too many openfiles",提高并发量,受linux最大打开文件限制 worker_processes 数字; 与cpu核心数一样
    worker_connections 数字; #并发量
       
  • 解决客户端访问头部过长:报414错误 原理:客户端发送请求头--->服务器使用缓存储存请求
    client_header_buffer_size 1k; 最小缓存1k,要添加,http代码块中
    large_client_header_buffers 4 4k; 最大缓存4个4k
       
  • 客户端缓存:适合长其不变的静态数据(.jpg,avi,mp3,mp4,flv)[/nginx.conf] ……
server { 
listen 80;
location ~\.(jpg|png|gif) { 检查到图片文件则缓存30天
expires 30d;
}

  • }
    注意:"ctrl+shift+delete"清楚缓存
  • 自定义返回404页面:[/nginx.conf,有模板]error_page 404 /404.html; #当出现404错误则显示404.html,404.html自创建
  • 防止盗链:    

Nginx升级:升级后需要重启服务

curl命令:测试页面

curl [参数] http://域名

-I :显示服务器响应数据