【Nginx】启用Https代理web服务

准备工作:

  • Nginx
  • Web服务
  • SSL证书
  • Docker环境(案例使用)

一.Nginx服务

编写nginx.conf文件,用来管理需要代理的服务

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    sendfile on;

    server {
        listen 80 default_server;

        location / {
            proxy_pass http://pandora:8899;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    server {
        listen 443 ssl default_server;

        ssl_certificate /etc/nginx/certs/nginx.crt;
        ssl_certificate_key /etc/nginx/certs/nginx.key;

        location / {
            proxy_pass http://pandora:8899;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

部分重要参数介绍:

  • pandora:是需要代理Web服务的service名称(参考下方docker-compose.yml)
  • ssl_certificate : 签名证书位置(.crt),docker-compose.yml里对该目录进行了映射(挂卷)
  • ssl_certificate_key : 签名私钥(.key), docker-compose.yml里对该目录进行了映射(挂卷)

二.Web服务

(pandora)参考docker-compose.yml

三.SSL证书

这里采用自签证书的方式举例.

  1. 生成私钥(密钥文件):
openssl genpkey -algorithm RSA -out nginx.key
  1. 生成证书签名请求
openssl req -new -key nginx.key -out nginx.csr
  1. 使用生成的私钥和 CSR 来生成自签名证书
openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crt

记住该系列文件存储位置(案例将文件存储到了/https中)

四.运行测试案例

Docker环境(案例使用)

案例基于dockerCompose方式启动,包含2个service分别是:

  • nginx(Nginx)-> 包含Nginx的容器,也是用它来启动https代理。
  • pandora (web服务) -> 用来案例测试的web容器,宿主机与容器的映射端口为0.0.0.0:8899 -> 0.0.0.0:8899

创建 docker-compose.yml,将以下内容替换Volumes其中SSL文件目录,如

volumes:
- ${宿主机nginx.conf目录}:/etc/nginx/nginx.conf
- ${宿主机nginx.crt目录}:/etc/nginx/certs/nginx.crt
- ${宿主机nginx.key目录}:/etc/nginx/certs/nginx.key

version: '3'

services:
  nginx:
    image: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /https/nginx.conf:/etc/nginx/nginx.conf  ##配置Nginx的文件(需要替代)
      - /https/nginx.crt:/etc/nginx/certs/nginx.crt ##配置https所需证书文件(需要替代)
      - /https/nginx.key:/etc/nginx/certs/nginx.key  ##配置https所需证书文件(需要替代)
    networks:
      - pandora_network
    depends_on:
      - pandora

  pandora:
    image: pengzhile/pandora
    environment:
      - PANDORA_CLOUD=cloud
      - PANDORA_SERVER=0.0.0.0:8899
    ports:
      - "8899:8899"
    networks:
      - pandora_network

networks:
  pandora_network:

启动命令

docker compose up -d

测试是否成功配置
docker ps来查看是否存在nginx,如果存在则大概率已经启动成功
启动成功后使用https://ip/访问出现以下画面说明自签名Https配置成功,点击继续访问就成功跳到了web服务页面。
在这里插入图片描述
在这里插入图片描述

访问路径如下:
https:/ip/ -> nginx: 443 -> web:8899
http://ip/ -> nginx:80 -> web:8899

如何解除安全警告

如果想解除安全警告限制,可以找相应机构来颁发证书,如(阿里,腾讯…),
不考虑国内机构可以参考https://letsencrypt.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值