今天配置nginx的反向代理,配置文件如下:

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
                                  ‘$status $body_bytes_sent “$http_referer” ‘
                                  ‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
include extra/static_pools;
include extra/dynamic_pools;

server {
listen 80;
server_name localhost;
root /home/www/index.html;

location / {
root html;
index index.html index.htm;
}

location ^~ /image/ {
proxy_pass http://static_pools/;
include proxy.conf;
}

location ^~ /dynamic/ {
proxy_pass http://dynamic_pools/;
include proxy.conf;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
             }
      }
}

[root@localhost extra]# more static_pools
upstream static_pools {
server 192.168.8.228:80 weight=5;
server 192.168.8.229:80 weight=5;

}

[root@localhost extra]# more dynamic_pools
upstream dynamic_pools {
server 192.168.8.228:80 weight=5;

}

配置完成后,访问后端服务器老是出现404,感觉这个proxy_pass没有生效,请求好像无法转发到后端服务器,开启前后端日志分析,发现请求已经转移到后端服务器,404是因为后端服务器无法匹配image这个目录导致,问题找到了,看来还是要看访问和错误日志才能找出具体的问题。

关于nginx配置proxy_pass转发的/路径问题,案例:

在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。

location ^~ /static_js/
{
proxy_cache js_cache;
proxy_set_header Host js.test.com;
proxy_pass http://js.test.com/;
}

如上面的配置,如果请求的url是http://servername/static_js/test.html
会被代理成http://js.test.com/test.html

而如果这么配置

location ^~ /static_js/
{
proxy_cache js_cache;
proxy_set_header Host js.test.com;
proxy_pass http://js.test.com;
}

则会被代理到http://js.test.com/static_js/test.htm

当然,我们可以用如下的rewrite来实现/的功能

location ^~ /static_js/
{
proxy_cache js_cache;
proxy_set_header Host js.test.com;
rewrite /static_js/(.+)$ /$1 break;
proxy_pass http://js.test.com;
}

因此加上/后代理访问后端服务器正常。

nginx代理后端服务器监控,用shell写的监控脚本,具体实现如附件.

nginx代理后端检测脚本

 

MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更 好的使用...

阅读全文

Mysql添加删除索引

使用索引,能够提高查询的速度 1、创建索引 1)ALTER TABLE 创建普通索引,UNIQUE索引或者PRIMARY KEY索引 ALTER TABLE table_name ADD INDEX index_name(colu...

阅读全文

mysql从MyISAM迁移到InnoDB引擎过程及优化

由于开发需要使用InnoDB引擎的事务功能,需要将原有的MyISAM引擎更换为InnoDB,InnoDB行级锁也可以避免MyISAM的锁表,操作流程如下: 查看mysql的存储引擎信...

阅读全文