首页 > 其他 > 详细

nginx反向代理的一次实践

时间:2019-08-22 20:26:38      阅读:116      评论:0      收藏:0      [点我收藏+]

场景:前端(VUE.js)应用部署在linux服务器,需要支持http和https访问。

问题1:阿里服务器不支持域名访问?

通过域名绑定服务器解决

问题2:如何通过http访问前端

前端通过nginx访问反向代理,在浏览器直接访问。

问题3:如何通过https访问前端

由于通过nginx反向代理是http协议,要支持https协议,需要安装ssl证书

https是基于SSL/TLS协议,使用非对称、对称、hash算法,通过crt证书返回给浏览器

1、生成证书  创建服务器私钥
openssl genrsa -des3 -out server.key 1024
2、创建签名请求的证书(csr); csr核心内容是一个公钥
openssl req -new -key server.key -out server.csr
3、去除使用私钥是的口令验证
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
4、标记证书使用私钥和csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

技术分享图片

server.crt是我们最终需要的证书

创建完证书之后开始nginx配置

server {

        listen       443 ssl;
        server_name  web.com.cn;
        ssl_certificate      "/etc/nginx/cert/server.crt";
        ssl_certificate_key  "/etc/nginx/cert/server.key";
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        include /etc/nginx/default.d/*.conf;
        location / {
            proxy_pass   http://127.0.0.1/;  #转发的IP地址
        }
        error_page 404 /404.html;
        location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
         location = /50x.html {
        }
    }

此配置我用户转发https协议变成http请求

下面配置nginx作为静态服务器使用

server {
        listen       80 default_server;
        #listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
                proxy_set_header   Host    $host;
                root 根目录前端应用;
                index index.html index.html;
                try_files $uri $uri/ @router;

        }
        location @router {
            rewrite ^.*$ /index.html last;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

到此两个配置完成时候重新加载nginx -s reload

通过浏览器即可访问

nginx是一个功能非常强大的web服务器常用的三个核心功能是反向代理、负载均衡和静态服务器。

nginx支持的负载均衡调度算法方式如下:

weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。

ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块

url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包
技术分享图片

 

nginx反向代理的一次实践

原文:https://www.cnblogs.com/mutong1228/p/11396536.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!