简介
从物理层解决一定量高并发问题的高性能 http 服务器,反向代理服务器及电子邮件代理服务器。
这里也主要介绍使用Nginx实现负载均衡,为web项目解决高并发问题。
HTTP 服务器: 本质上也是一种应用程序,运行在服务器上,处理客户端发来的HTTP请求,返回相应的静态资源。HTTP Server 同 Nginx 本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容)
Tomcat服务器: 与HTTP服务器相比,他能够动态的生成资源并返回到客户端。
几种常见服务的区别
安装
直接使用sudo apt install nginx。
安装后的配置文件在/etc/nginx下,nginx.conf
这样的安装的nginx还需要关注下下面的这两个配置,因为在nginx.conf的最下面包含了这两个配置文件的。
/etc/nginx/conf.d/*.conf;
/etc/nginx/sites-enabled/*;
虚拟主机配置
在/etc/nginx/sites-available default文件里,Server节点就是一个虚拟主机。
可在这个文件中配置多个虚拟主机。【需要将新增加的默认字符default_server删除】
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
这里配置虚拟主机有两种,通过端口区分虚拟主机或者通过域名区分。
- 通过端口区分:
再增加如下配置一个虚拟主机,将监听端口改为88,访问的html假设都相同。
server {
listen 88 default_server;
listen [::]:88 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
修改完之后,不用重启,使用以下命令重新加载
/usr/sbin/nginx -s reload 重新加载Nginx配置
- 使用域名区分:
就是两个虚拟主机都监听相同的端口,但是server_name不同,访问的html也不同。
反向代理配置
在我理解,这个反向代理像是代理客户端,将所有的请求分发到实际服务器上去。
在server节点下的location中添加代理传送,proxy_pass
然后添加 upstream 为代理传送的域名。
upstream yangm.com {
server 192.168.192.133:8080;
#当有新的服务器添加进来时,在后面添加server即可,
#由于新服务器性能往往会更好,处理起来更快,所以可以将权重提高,多处理几次 默认为1。
#等号前后不能空格
server 192.168.192.133:8081 weight=2;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.yangm.com;
location / {
#代理传送
proxy_pass http://yangm.com;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
负载均衡
Nginx作反向代理服务器的功能之一就是解决web项目的并发问题,它可将并发的请求按照一定算法分给制定的服务器。
顺序(默认),随机,IP hash算法(可以解决并发问题的一种算法)
问题
nginx做反向代理但是图片,css,js等静态资源加载出错
在如上配置反向代理制之后,发现无法访问js,css,图片等资源文件。
于是就在location 后面加了过滤资源文件的正则。
更好的解决可以参考 https://blog.csdn.net/sinat_29318807/article/details/79205345
upstream yangm.com {
server 192.168.192.133:8080;
#当有新的服务器添加进来时,在后面添加server即可,
#由于新服务器性能往往会更好,处理起来更快,所以可以将权重提高,多处理几次 默认为1。
#等号前后不能空格
server 192.168.192.133:8081 weight=2;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
#root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name www.yangm.com;
#代理服务 且释放拦截的资源 最后一个*:(js|css|jpg|png|jpeg)
location ~ .*\.*$ {
proxy_pass http://yangm.com;
}
}