关于反向代理和正向代理

正向代理

正向代理代理的是客户端

反向代理

反向代理代理的是服务端

常用web服务器

apache、nginx(5万并发连接数响应)、tomcat、jboss
动态web服务器和静态web服务器

Nginx核心配置分析

  1. ##main
  2. #user nobody
  3. worker_processes 1;###配置CPU 核心数,或者是核心数的2
  4. ##event
  5. events {
  6. ##io网络模型,建议使用 use epoll
  7. worker_connections 1024;
  8. }
  9. ##http
  10. http {
  11. include mime.types;
  12. default_type application/octet-stream;
  13. sendfile on;
  14. keepalive_timeout 65;
  15. ##虚拟主机
  16. server {
  17. ##监听端口号
  18. listen 80;
  19. server_name localhost;
  20. ##匹配域名规则
  21. location / {
  22. root html;
  23. index index.html index.htm;
  24. }
  25. error_page 500 502 503 504 /50x.html;
  26. location = /50x.html {
  27. root html;
  28. }
  29. }
  30. }

虚拟主机配置

基于域名的虚拟主机

  1. server {
  2. ##监听端口号
  3. listen 80;
  4. server_name www.frend.com;
  5. ##匹配域名规则
  6. location / {
  7. root html/domain;
  8. index index.html index.htm;
  9. }
  10. error_page 500 502 503 504 /50x.html;
  11. location = /50x.html {
  12. root html;
  13. }
  14. }
  15. cd html
  16. mkdir domain
  17. vim index.html
  18. --配置完成以后 使用nginx -t验证配置文件是否有错误
  19. --重新加载配置文件 ./nginx -s reload
  20. --本地测试的化,使用本地host配置映射
  21. 127.0.0.1 localhost
  22. 192.168.56.1 www.frend.com

基于ip的虚拟主机

基于端口的虚拟主机

  1. server {
  2. listen 8080;
  3. server_name localhost;
  4. location /{
  5. root html/port;
  6. index index.html;
  7. }
  8. }
  9. cd html
  10. mkdir port
  11. vim index.html

Nginx的日志配置

assess.log 访问日志
error.log 错误日志

通过access_log进行日志记录

nginx中有两条是配置日志的:一条是log_format来设置日志格式;另外一条是access_log;

  1. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  2. # '$status $body_bytes_sent "$http_referer" '
  3. # '"$http_user_agent" "$http_x_forwarded_for"';

access_log 格式
#error_log logs/error.log notice;
log 声明 路径文件名 日志标识

自定义日志格式

  1. log_format myformat '$remote_addr - $remote_user';
  2. access_log logs/my.log myformat;

日志切割

location 的语法和匹配规则

  1. location [正则表达式]/uri{
  2. }

location匹配规则
精准匹配 优先级最高
location=/uri{}
一般匹配
location /uri{}
正则匹配
匹配顺序 : 精准匹配 > 一般匹配 > 正则匹配

rewrite使用

支持url重写;支持if判断、return指令
作用范围:server/location/if 中;只能对域名后面的除去字符串之外的字符串其作用。
if(条件){}
= 号 或者~;

return 指令
return code
if($request_uri ~ *.sh){
return 403
}

语法:rewrite regex replacement[flag] {last/break/redirect 返回临时302/permant 返回永久302}

使用rewrite跳转到百度

  1. server {
  2. listen 8080;
  3. server_name localhost;
  4. location /{
  5. rewrite ^/ http://www.baidu.com;
  6. }
  7. }

使用rewrite跳转到不存在视图:如自定义404和系统提供的404视图
image.png
在$2.$3后面添加break或者last;
last:停止处理后续的rewrite指令集、然后对当前重新的uri在rewrite指令集上重新查找
break:停止处理后续的rewrite指令集,并不会重新查找。

浏览器本地缓存配置

expires

s|m|h|d:秒|分钟|小时|天

  1. server {
  2. listen 8080;
  3. server_name localhost;
  4. location /{
  5. root html;
  6. index index.html index;
  7. }
  8. location ~\.(png|jpg|js|css/gif)${
  9. root html/images;
  10. expires 5m;//缓存5分钟
  11. }
  12. }

Gzip压缩策略

浏览器请求 -> 告诉服务端当前浏览器可以支持压缩类型;
服务端会把内容会根据浏览器的压缩策略进行压缩返回
浏览器拿到数据后解码展示。

  1. server {
  2. listen 8080;
  3. server_name localhost;
  4. //开启压缩策略
  5. gzip on;
  6. gzip_buffers 4 16k;
  7. gzip_comp_level 4;//会影响到图片的失帧 1~9
  8. gzip_min_length 500;//这个长度的时候不会被压缩
  9. gzip_types text/css text/xml application/javascript;
  10. location /{
  11. root html;
  12. index index.html index;
  13. }
  14. location ~\.(png|jpg|js|css/gif)${
  15. root html/images;
  16. expires 5m;//缓存5分钟
  17. }
  18. }

反向代理

vim proxy.conf

  1. server {
  2. listen 8080;
  3. server_name localhost;
  4. location =/s{
  5. ##拿到header参数
  6. proxy_set_header X_Real_IP $remonte_addr;
  7. proxy_pass http://www.baidu.com;
  8. }
  9. }
  10. ##引入
  11. http{
  12. include /etc/nginx/conf.d/*.conf;
  13. }

负载均衡

vim upstream.conf

  1. upstream tomcatserver{
  2. ##策略
  3. ip_hash;
  4. server 192.168.0.100:8080;
  5. server 192.168.0.101:8080;
  6. }
  7. ##引入
  8. http{
  9. include /etc/nginx/conf.d/upstream.conf;
  10. }
  11. server {
  12. listen 8080;
  13. server_name localhost;
  14. location =/s{
  15. proxy_pass http://tomcatserver;
  16. }
  17. }

支持的策略

默认是轮询机制
ip_hash 更具hash值来做转发

权重 weight=x
fair 根据服务器的响应时间来分配请求
url_hash