演变
单机架构:LNMP、LAMP、WAMP
性能优化:动静分离、数据库独立、数据库读写分离、负载均衡、双活技术、数据库中间件、缓存、搜索
动静分离:静态请求速度很快,而动态请求比较慢,因此可以单独将动态请求的处理独立一台服务器。 数据库独立:跟多时候,数据库是服务器的性能瓶颈,因此将数据库独立出来一台服务器。 读写分离:当一台数据库服务器负载受限时,可以将读(查询)和写(增删改)的操作分别在两台服务器上完成。 负载均衡:一台服务器已经不能搞定,需要多台服务器,因此需要一台作为任务分发工作的服务器。 session共享:可以在负载均衡中使用ip_hash算法,也可以搭建专门的session服务器(nfs/memcache/redis) 双活技术:万一负载均衡服务器挂了,所以需要搞一台备用,主备使用keepalived技术保持心跳,随时待命 数据库中间件:当数据的读写操作收到限制性(数表特别大),可以分库分表分机器等手段以提高效率 缓存:可以保存session,甚至可以保存使用频率较高的数据库中的数据 搜索:当数据量特变大的时候,使用link命令,可以单独整一台搜索服务器(xunsearch) CDN:内容分发网络 DNS负载均衡:在DNS解析时,一个域名解析到不同的负载均衡服务器
代理服务
正向代理:你上网的时候,请求网页不是和真实网站进行通讯,而是将请求发给代理服务器,代理服务器请求真实的服务器,然后将数据返回给你。在网站看来,代理服务器就是一个普通的客户端,对网站是透明的。
如:翻墙、…
反向代理:原理和正向代理一样,也是直接请求代理服务器,然后代理服务器请求真实服务器并返回数据。在用户看来,请求代理服务器就像是在请求真实服务器一样,在用户来代理服务器是透明的。
如:防火墙、…
反向代理
配置步骤:
代理服务器(nginx)
upstream apachephp{ server 真实服务器IP:80; #Apache } server { listen 80; server_name www.daili.com; #域名需要解析 location / { proxy_pass http://apachephp; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; #传递真实的用户IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
真实的服务
1.可以是Wampserver 2.也可以是搭建好lnmp环境的主机
eg:
1.在真实服务器上写内容,访问代理服务器(域名需要解析)即可
2.用户真实的IP($_SERVER[‘REMOTE_ADDR’])会被代理服务器替换
3.用户真实的IP需要代理服务器传递过去,保存在:
$_SERVER['HTTP_X_REAL_IP']
$_SERVER['HTTP_X_FORWARDED_FOR']