Web 服务器:Nginx
前面讲过的 Httpd 和 Tomcat 以及这个小节所讲的 Nginx 都是 Web 服务器,他们三者发展到今天并没有很明显地成为某个产品一枝独秀的强垄断局面,因为他们有各自的特点和适用的场合,在某些场合他们甚至可以共用达到互补的功能。
1. Nginx 简介
Nginx 是由俄罗斯工程师伊戈尔·赛索耶夫开发的,同样是开源免费的。虽然它和 Httpd 与 Tomcat 都称为 Web 服务器,但是它的功能强大得简直不像是个 Web 服务器,比如它的反向代理和负载均衡,几乎成了现在 Web 应用的必备基础设施。与此同时它的高并发处理能力也是很强大的,是 Httpd 强有力的竞争者。至于实现 Servlet 规范的 Tomcat 倒是替代不了,因为 Nginx 不支持。
三种服务器各自适用场景:
Tomcat:Java 应用容器,同样可以借助 Nginx 实现水平服务的扩展;
选择 Nginx 的理由:
但是 Nginx 却是单线程的,它采用 事件驱动 + IO 多路复用的处理模型。
3. 反向代理
代理一词在我们生活中很常见,有反向代理肯定也有正向代理。他们之间的主要区别是,正向代理客户端明确地知道自己最终访问的是谁,反向代理客户端就只了解到代理服务,不清楚具体谁在提供服务。以下列举 2 个例子说明:
3.1 反向代理的好处
- 可以隐藏后端的具体服务,提高了系统的安全级别;
- 可以实现服务的负载均衡,请求经代理转发到不同的服务提供者,可以无限扩容后端服务,提高并发处理能力;
- 结合监控服务,可以智能地移除故障机器上面的服务,提高可靠性。
4. Nginx 配置
http {
....
server {
listen ;#监听端口
server_name localhost;#域名
# 禁止访问隐藏文件
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# 默认请求
location / {
# 首先尝试将请求作为文件提供,然后作为目录,然后回退到显示 404。
# try_files 指令将会按照给定它的参数列出顺序进行尝试,第一个被匹配的将会被使用。
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.PHP?path_info=$uri&$args =;
access_log off;
expires max;
}
# 所有动态请求都转发给tomcat处理
location ~ .(jsp|do)$ {
proxy_pass http://test;
}
upstream test { # 负载均衡配置
server localhost:;
server localhost:;
}
}
Nginx -s reload