项目学习记录-Nginx

简介

从物理层解决一定量高并发问题的高性能 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;
    }

}

猜你喜欢

转载自blog.csdn.net/eternal1d/article/details/80817852