Nginx_http模块&SSL证书&指定配置文件

一、nginx添加https模块

1、首次安装部署nginx

  • 第一次安装nginx的时候添加http模块并编译安装nginx,注意需要在nginx的源码路径下。
bash 复制代码
#添加http模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module
#编译
make
#安装
make install

2、二次添加模块

  • 如果是二次修改添加新的模块再make install就是覆盖安装,建议使用如下方法:
bash 复制代码
#添加http模块
./configure --prefix=/usr/local/nginx --with-http_ssl_module
#编译
make

#备份原有的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
#复制新编译好的nginx覆盖原有的nginx(需要先停掉原有的nginx服务)
cp ./objs/nginx /usr/local/nginx/sbin/


#启动nginx在/usr/local/nginx/sbin/路径下
./nginx
#启动之后可通过-V参数查看模块是否添加成功
/usr/local/nginx/sbin/nginx -V

二、自建SSL证书

1、新建自建证书存放目录

该目录可以存放在任何位置,只要保证在nginx指定的配置文件中正确引入证书即可正常使用。

  • 生成一个RSA密钥
bash 复制代码
#实际使用中看服务器性能,如果足够好也可以使用4096位秘钥
openssl genrsa -des3 -out nginx.key 1024  

Generating RSA private key, 1024 bit long modulus

.......++++++

...++++++

e is 65537 (0x10001)Enter pass phrase for nginx.key: #输入密码,自定义,不少于4个字符

Verifying - Enter pass phrase for nginx.key: #确认密码

  • 生成一个证书请求
bash 复制代码
openssl req -new -key nginx.key -out nginx.csr

Enter pass phrase for nginx.key: #输入刚刚创建的密码

You are about to be asked to enter information that will be incorporatedinto your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.


Country Name (2 letter code) [XX]:CN #国家名称

State or Province Name (full name) []:ShangHai #省

Locality Name (eg, city) [Default City]:ShangHai #市

Organization Name (eg, company) [Default Company Ltd]:ACBC #公司

Organizational Unit Name (eg, section) []:Tech #部门

Common Name (eg, your name or your server's hostname) []:*.mydomain.com

#注意,此处应当填写你要部署的域名,如果是单个则直接添加即可,如果不确定,使用*,表示可以对所有mydomain.com的子域名做认证

Email Address []:admin@mydomain.com #以域名结尾即可

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []: #是否设置密码,可以不写直接回车

An optional company name []: #其他公司名称 可不写

  • 创建不需要输入密码的RSA证书,否则每次reload、restart都需要输入密码
bash 复制代码
openssl rsa -in nginx.key -out nginx_nopass.key

Enter pass phrase for nginx.key: #之前RSA秘钥创建时的密码

writing RSA key

  • 签发证书(由于是测试自己签发,实际应该将自己生成的csr文件提交给SSL认证机构认证
bash 复制代码
 openssl x509 -req -days 3650 -in nginx.csr  -signkey nginx.key -out nginx.crt 

Signature ok

subject=/C=CN/ST=ShangHai/L=ShangHai/O=ACBC/OU=Tech/CN=*.mydomain.com/emailAddress=admin@mydomain.com

Getting Private key

Enter pass phrase for nginx.key: #RSA创建时的密码

三、使用指定的配置文件

1、指定nginx配置文件

实际生产中需要指定nginx的反向代理,可以通过引入指定的配置文件而不适用默认的nginx配置。

  • 使用include引入新的配置文件路径,注意和server同级
  • include /usr/local/nginx/conf.d/new.conf;
  • 修改之后保存并退出nginx.conf
bash 复制代码
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    include /usr/local/nginx/conf.d/new.conf;
    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;

2、测试配置文件

bash 复制代码
#切换到nginx的可执行文件目录下
./nginx -t

配置文件正确会返回successful,如果有错会提示在配置文件哪一行出错,需要回到配置文件进行修改。

3、重启nginx

bash 复制代码
#如果nginx在启动中,需要先停止服务,然后再进行重启
ps -ef | grep nginx
#查看nginx服务PID
kill nginx的进程号
#在nginx的可执行文件目录下重启nginx
./nginx

4、以https访问网页

可正常访问说明配置成功

相关推荐
高木木的博客10 小时前
数字架构智能化测试平台(1)--总纲
人工智能·python·nginx·架构
徐子元竟然被占了!!11 小时前
Nginx
运维·nginx
图图玩ai12 小时前
SSH 命令管理工具怎么选?从命令收藏到批量执行一次讲清
linux·nginx·docker·ai·程序员·ssh·可视化·gmssh·批量命令执行
CXH72813 小时前
nginx——https
运维·nginx·https
Lentou14 小时前
nginx反向代理
运维·nginx
遇见火星15 小时前
linux设置开启启动服务
linux·运维·服务器·nginx
悟道子HD15 小时前
计算机网络端口记忆指南
计算机网络·http·https·ssh·ftp·端口号·smtp
咸鱼翻身小阿橙16 小时前
QT P4
数据库·qt·nginx
中科三方17 小时前
SSL证书、域名与IP地址:三者关系全面解析与常见误区澄清
网络·tcp/ip·ssl
o丁二黄o18 小时前
若依部署Nginx和Tomcat
运维·nginx·tomcat