ubuntu中安装nginx并配置SSL

本文介绍了在Ubuntu上安装Nginx,并详细讲述了如何将jks证书转换为适用于Nginx的.key和.crt文件,包括使用keytool和openssl的命令,最后讨论了配置Nginx的SSL及平滑重启nginx的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装

ubuntu中安装软件的方式比较快捷,特别是对于我这种菜鸟来说apt-get简直就是神器,安装nginx只需要执行:sudo apt-get install nginx,然后就会自动的安装好该软件。

安装好后nginx的安装目录在:/etc/nginx下,nginx的默认访问静态资源路径是:/var/www/html。ubuntu中自动安装的nginx的配置文件是适用include的方式从sites-enabled下引入的,所以要修改nginx的配置文件需要去该目录下添加或修改配置文件。暂时先不管这个了,安装好就可以用,作为小菜的我也不知道其他需要配置些什么,只能走一步算一步了。今天的主要目的是配置nginx为ssl的代理服务器,所以还是快点配置证书什么的吧。

证书转换

由于我以前是在tomcat上配置的ssl,而且配的是jks(java key store)文件。查了很多资料都没有看到可以在nginx上配置jks的,想了一下,jks是依赖java的,nginx不支持也是正常的。看了那些资料上配置的都是.key文件和.crt文件,就查了一下jks文件到处.crt的方法。黄天不负苦心人,让我在内存.溢出上找到了一篇博文,根据这篇博文我进行了相关操作:

jks证书文件转换为pkcs12文件

keytool -importkeystore -srckeystore leo.meteors.cc.jks -destkeystore leo.meteors.cc.p12 -scrstoretype jks -deststoretype pkcs12 -deststorepass 123456

命令执行过程中需要先输入原jks的密码,然后输入p12的密码(123456),如果不需要修改密码,在上述命令中可以去掉-deststorepass这个参数,那么后面输入p12的密码就需要与jks的密码一致。

pkcs12导出pem

据说这个pem可以配置到nginx中,但是我暂时没有找到配置方法,这里记下导出方式方便我以后学会了配置方法时使用。
从pkcs12导出pem需要用到openssl工具,命令如下:
- 导出加密的pem

openssl pkcs12 -in leo.meteors.cc.p12 -out leo.meteors.cc.pem

- 导出非加密的pem

openssl pkcs12 -nodes -in leo.meteors.cc.p12 -out leo.meteors.cc.pem

分别导出key和crt

这种导出方式是我当前用到的,因为所查询到的资料都是配置key和crt的。
- 导出key

# 加密key
openssl pkcs12 -in leo.meteors.cc.p12 -nocerts -out leo.meteors.cc.key
# 非加密key(未使用)
openssl pkcs12 -in leo.meteors.cc.p12 -nocerts -nodes leo.meteors.cc.key

- 导出证书

openssl pkcs12 -in leo.meteors.cc.p12 -nokeys -clcerts -out leo.meteors.cc.crt

- 导出CA证书(不知道用来干啥)

openssl pkcs12 -in leo.meteors.cc.p12 -nokeys -cacerts -out leo.meteors.cc.ca.crt

现在需要的文件都拿到了,可以开始配合SSL了

配置nginx的ssl

我选择的是修改sites-enabled的default文件,在修改前先备份该文件:

cd /etc/nginx/sites-enabled/
# 在/etc/nginx/nginx.conf中使用是导入/sites-enabled文件夹下的所有文件
# 所以我需要将该文件备份到其他的目录
cp defaut /home/lethew/bak
# 编辑该文件
sudo vi default

执行完上述命令后,终端将打开该文件的vi编辑页面,在该文件中编辑:

server{
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    server_name leo.meteors.cc;
    location / {
        prox_pass http://localhost:9080;
    }

    ssl on;
    ssl_certificate /home/lethew/cert/leo.meteors.cc.crt;
    ssl_certificate_key /home/lethew/cert/leo.meteors.cc.key;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    ssl_prefer_server_ciphers on;
}

然后退出viESC :wq

平滑重启nginx

很多时候我们需要更新正在运行的nginx,由于nginx代理的站点可能非常的多,一旦停止将造成不可估量的影响,所以需要在不影响其他站点的情况下更新nginx。nginx也是支持平滑重启服务方法,命令如下:

# 语法检查
nginx -t
# 重新加载资源
nginx -s reload

总结

这次nginx的配置虽然完成的工作简单,但作为首次这么近距离的接触nginx能完成这么多工作还是很有成就感的。另外也知道使用jks到处nginx可用的证书文件方式,接触到了openssl这些整天听说却没有接触的技术。但由于对nginx的反向代理原理和配置不是太了解,在完成这些工作后想凭自己的理解去配置一下代理第二个和第三个站点的时候导致了404错误,现在正在努力的学习nginx的官方文档已解决这个问题。哈哈,到底我还是太年轻啊……

好的,我很乐意为您介绍如何在Ubuntu安装Nginx配置负载均衡。以下是详细的步骤: 1. 更新软件包列表 首先,我们需要更新Ubuntu的软件包列表,以确保我们获取到最新的软件包信息: ``` sudo apt update ``` 2. 安装Nginx 使用以下命令安装Nginx: ``` sudo apt install nginx ``` 3. 启动设置Nginx开机自启 安装完成后,启动Nginx设置其开机自启: ``` sudo systemctl start nginx sudo systemctl enable nginx ``` 4. 配置负载均衡 编辑Nginx配置文件,通常位于/etc/nginx/sites-available/default: ``` sudo nano /etc/nginx/sites-available/default ``` 在server块中添加upstream块,定义后端服务器: ``` upstream backend { server 192.168.1.2:80; server 192.168.1.3:80; server 192.168.1.4:80; } ``` 然后,修改location块,将请求转发到upstream: ``` location / { proxy_pass http://backend; } ``` 5. 测试配置重启Nginx 保存文件后,测试Nginx配置是否正确: ``` sudo nginx -t ``` 如果没有错误,重启Nginx使配置生效: ``` sudo systemctl restart nginx ``` 6. 配置健康检查(可选) 为了提高负载均衡的可靠性,我们可以添加健康检查: ``` upstream backend { server 192.168.1.2:80 max_fails=3 fail_timeout=30s; server 192.168.1.3:80 max_fails=3 fail_timeout=30s; server 192.168.1.4:80 max_fails=3 fail_timeout=30s; } ``` 7. 调整负载均衡策略(可选) 默认情况下,Nginx使用轮询策略。我们可以修改upstream块来改变策略,例如使用最少连接数: ``` upstream backend { least_conn; server 192.168.1.2:80; server 192.168.1.3:80; server 192.168.1.4:80; } ``` 通过以上步骤,您就成功在Ubuntu安装配置Nginx负载均衡。根据您的具体需求,您可能还需要进行一些额外的配置,如SSL/TLS设置、日志管理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值