• windows环境下Nginx部署及Https设置


    一、Nginx安装部署及常用命令。

     1.1、其实Nginx是免安装的。直接在官网下载zip包,解压即可,下载地址:http://nginx.org/en/download.html,因为我这边的开发服务器是阿里云windows服务器,所以我下载的是对应的windows版本(当时下载的是1.15.9版本)

    下载完成解压即可。

    1.2   Nginx基本配置,配置文件路径: 安装路径下的conf文件夹下的nginx.conf。Nginx默认启动端口是80,在服务器上注意不要和tomcat冲突

         负载均衡配置如下:

         这里,我配置了两个项目,分别命名为:boot和product,示例配置只配置了boot项目的访问,其实配置第二个时候和第一个一样,只需再复制一个service,端口也是80,修改service_name(可指定为具体域名)及proxy_pass为product项目

    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
        upstream  boot {  #服务器集群名字   
          ip_hash; #同一个用户指定访问一台服务,保证session可用
          server  192.168.20.122:8090  weight=1; #weight设置访问权重,值越大,访问概率越高
          server  192.168.20.101:8090  weight=1; 
        } 
        upstream  product {  #可以指定多个项目 
          server  192.168.20.122:8099 weight=1; 
        } 
    
      server {
            listen       80;
            server_name  localhost;#此处可以设置为项目域名如:www.baidu.com
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
     
            location / {
    #代理转向到那个项目 proxy_pass http:
    //boot; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /.ht { # deny all; #} }

    1.2、Nginx常用命令

          我这里的解压路径是 C:Program Files ginx,以下操作都是基于此路径。

         1、启动

             cd C:Program Files ginx ginx-1.15.9nginx.conf
             nginx.exe

         2、刷新(重新加载)

            nginx -s reload

         3、停止(有时候该命令并不好用,可以直接在任务管理器,进程中找到nginx.exe并结束)

           nginx -s quit

    二、Nginx下Https设置

    1、https证书获取有很多途径,我这里使用的阿里云提供的免费证书(每个阿里云 账号可免费申请20个Https证书)。登陆阿里云平台,搜索ssl,购买证书如下:

    购买完成后跳转管理页面:

    购买完成后下个流程是验证,这里没有截图直接跳过了,验证页面最主要的信息是绑定域名,其他的可以按照默认设置,联系方式填下,按照指引逐步操作,最后等待审核通过就行了,一般审核很快(半个小时以内)。

    审核完成后,选择购买的ssl,点击下载,选择Nginx,剩下的就按照阿里云帮助文档配置就行了

     证书下载完成后,把里面的pem和key文件复制,然后在Nginx安装目录下的conf文件目录下新建文件夹cert,并将证书文件复制进去

    准备工作完成后,最后配置Nginx配置文件nginx.conf,删除原有的service,添加如下配置

    server {
           
            listen 443 ssl;
            server_name www.baidu.com; #修改为申请证书绑定的域名
            
            root html;
            index index.html index.htm;
            ssl_certificate   cert/XXX.pem;
            ssl_certificate_key  cert/XXX.key;
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            location / {
                    proxy_pass http://boot; 
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            
        }
    
        server {
    
            listen       80;
            server_name  www.baidu.com; #修改为申请证书绑定的域名
            rewrite ^(.*)$ https://${server_name}$1 permanent; 
        }

    注:在阿里云ECS上部署的使用,一定要去安全组规则里面打开443端口(默认是关闭的),否则是无法使用https的

    通过上面配置,则项目只能通过https访问(http会重定向到https),如果向同时使用https和http,则删除第二个service(监听80端口并控制重定向),同时在第一个service 的listen 443 ssl前面加上listen 80 default backlog=2048;

    这样则完成了http和https的并行访问。

    总结:如果有多个项目需要用Nginx代理,则复制上面的service,修改证书(如果是https的话)及项目(proxy_pass)。

  • 相关阅读:
    glog入门demo
    gflag的简单入门demo
    caffe库源码剖析——net层
    排序算法的c++实现——计数排序
    docker的/var/lib/docker目录迁移
    SpringCloud Ribbon 负载均衡 通过服务器名无法连接的神坑一个
    Spring Boot Cache使用与整合
    Navicat Keygen
    Windows / Office
    docker swarm 搭建与服务更新
  • 原文地址:https://www.cnblogs.com/kui-technology/p/10972634.html
Copyright © 2020-2023  润新知