愤怒中的小草

博客园 首页 新随笔 联系 订阅 管理

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

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

通过域名绑定服务器解决

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

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

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

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

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

如果申请不成功,参照阿里的配置,在ssl控制台申请ca免费证书

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

通过浏览器即可访问

server内同时配置反向代理和静态文件的方式 这个是服务器生成

server {

        listen       443 ssl;
        server_name  填写域名;
        ssl_certificate      "/etc/nginx/cert/https.crt";
        ssl_certificate_key  "/etc/nginx/cert/https.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 /front {
            proxy_pass   http://127.0.0.1:7000/;
        }

        location / {
            proxy_set_header   Host    $host;
            root /etc/nginx; #静态文件目录
            index index.html index.html;
            try_files $uri $uri/ @router;
        }

        error_page 404 /404.html;
        location = /40x.html {
        }

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

    }

使用阿里证书

server {

        listen       443 ssl;
        server_name 域名;
        ssl on;
        ssl_certificate      /etc/nginx/cert/2703312_aa.com.cn.pem;
        ssl_certificate_key  /etc/nginx/cert/2703312_aa.com.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_prefer_server_ciphers on;
        
        location / {
                proxy_set_header   Host    $host;
                root /opt/dev/aa/aabb;
                index index.html index.html;
                try_files $uri $uri/ @router;

        }

        error_page 404 /404.html;
        location = /40x.html {
        }

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

    }

 

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软件包

 

posted on 2019-08-22 20:10  愤怒中的小草  阅读(291)  评论(0编辑  收藏  举报