Ubuntu下简单的nginx反向代理https

1、前言

利用nginx实现http网站https访问。自从改用edge浏览器后,访问内网的http服务总会看到网址栏目那“不安全”三个大字,这些应用自身没有https服务,只能通过反向代理实现。所以能简单的配置nginx反向代理就十分的重要。

2、Ubuntu安装nginx

sudo apt update
sudo apt install nginx

安装完成后输入nginx查看nginx状态。

nginx

3、导入ssl证书到/etc/nginx/ssl/

可以利用FinalShell这样的ssh软件将ssl证书上传到Ubuntu下的/etc/nginx/ssl/目录,博主不展开说明。

4、配置反向代理文件

在/etc/nginx/conf.d/下创建任意名称的(*.conf)*为任意名称,博主习惯为nginx.conf。

5、在创建的nginx.conf文件里输入以下内容

#反向代理的第一个端口。
server {
    listen 443 ssl;#反向代理到的端口。
    server_name shuuokonet.ltd;#替换成自己的域名。
    ssl_certificate /etc/nginx/ssl/server.pem;#存放证书的位置。
    ssl_certificate_key /etc/nginx/ssl/server.key;#存放证书秘钥位置。
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    client_max_body_size 500M;
    location / {
        root html;
        index index.html index.htm;
        proxy_pass http://localhost:8080/;需要代理的网站和端口。
        proxy_read_timeout 300;
        proxy_connect_timeout 300;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
#反向代理的第二个端口,后继复制改端口或者域名都可以,只代理一个可以将下面的全部删除。
server {
    listen 7000 ssl;#反向代理到的端口。
    server_name shuuokonet.ltd;#替换成自己的域名。
    ssl_certificate /etc/nginx/ssl/server.pem;#存放证书的位置。
    ssl_certificate_key /etc/nginx/ssl/server.key;#存放证书秘钥位置。
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    client_max_body_size 500M;
    location / {
        root html;
        index index.html index.htm;
        proxy_pass http://localhost:9000/;#需要代理的网站和端口。
        proxy_read_timeout 300;
        proxy_connect_timeout 300;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

6、保存并退出

输入一下命令验证是否配置成功。

nginx -t

结果为test is successful的话说明已经成功配置,但目前还不能通过反向代理的端口进行访问,输入一下命令需要刷新nginx。

nginx -s reload

7、配置Ubuntu防火墙

如果刷新完成nginx仍然不可访问一般为防火墙未开放端口,输入一下命令添加防火墙端口,7000为打开的防火墙端口。

sudo uft allow 7000

查看防火墙状态,是否成功添加。

ufw status verbose

也可以输入以下命令关闭一些端口。

ufw deny 7000

8、这个时候应该就能实现https访问了

部分参考如何在 Ubuntu 20.04 上安装 Nginx - 知乎 (zhihu.com)

如有错误或者是更好的方法,请留下您高明的见解。

封面Fukuro袋子的个人空间_哔哩哔哩_bilibili