nginx SSL安装

新版服务器安装

yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel make gcc-c++ libtool 

 
 
安装openssl

cd /home
1. 下载安装wget
yum -y install wget

2. 获取openssl源码包
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
3. 安装openssl 所需依赖
yum -y install gcc gcc-c++ openssl-devel libstdc++* libcap* wget pam-devel zlib-devel perl
4. 解压编译openssl
# 解压下载好的openssl源码包并进入其目录
tar -zxvf openssl-1.1.1w.tar.gz
mv openssl-1.1.1t /usr/local/openssl

cd openssl-1.1.1w
# 进入解压后的openssl文件夹
cd /usr/local/openssl
# 将openssl安装在/usr/local/openssl
./config threads zlib shared enable-camellia

./config --prefix=/usr/local/openssl

 

./config --prefix=/usr/local/openssl  threads zlib shared enable-camellia


# 进行编译安装
make && make install

 

上面错误可以使用ldd更清楚的查看是缺少哪个库。

ldd /usr/local/openssl
linux-vdso.so.1 => (0x00007ffc63975000)
libssl.so.1.1 => not found
libcrypto.so.1.1 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00007f8d9da0f000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8d9d7f3000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8d9d431000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8d9dc28000)

8 解决
很简单,原因是动态库链接路径找不到。加入动态库的路径即可。

echo /usr/local/openssl/lib >> /etc/ld.so.conf
ldconfig /etc/ld.so.conf #立即更新配置,实际上后面的/etc/ld.so.conf参数可以省略

 

如果报这个错误ImportError: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b

首先查看该动态库

ldd /lib64/libk5crypto.so.3

 如这个可以看出软链接错误

首先删除该链接

rm -f /path/to/link

rm -f /usr/local/openssl/lib/libssl.so.1.1

然后执行

echo /usr/lib64 >> /etc/ld.so.conf
ldconfig /etc/ld.so.conf #立即更新配置,实际上后面的/etc/ld.so.conf参数可以省略

解决

 

5. 替换旧版openssl

查找一下libssl.so.1.1的位置,然后连接到/usr/lib64/libssl.so.1.1即可。如下我的位置是在/usr/local/lib64/libssl.so.1.1,连接到/usr/lib64/libssl.so.1.1就可以了。

[root@localhost ~]# find / -name libssl.so.1.1

 find / -name libcrypto.so.1.1
/usr/local/lib64/libssl.so.1.1
[root@localhost ~]# ln -sf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
[root@localhost ~]# ln -sf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

[root@localhost ~]# ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
[root@localhost ~]# ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -sf /usr/local/openssl/include/openssl /usr/include/openssl

[root@localhost ~]# openssl version
OpenSSL 1.1.1t


6. 查看openssl版本
openssl version

注:
安装完openssl后使用 ssh -V 查看依然是旧版openssl, 是因为openssh是rpm/yum安装的调用的openssl依旧是旧版,不影响使用。

如果看不顺眼可以编译升级新版openssh解决。

 

 

我们可以看到请求的body的大小,在Content-Length后显示,Nginx默认的request body为1M,小于我们上传的大小

在http{}中加入 client_max_body_size 50m;

 

nginx 最新下载地址 http://nginx.org/en/download.html

Nginx官网提供了三个类型的版本
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版

rpm -ivh rpm软件安装包

一、卸载NGINX
卸载nginx程序的详细步骤

1、停止Nginx软件

/usr/local/nginx/sbin/nginx -s stop
如果不知道nginx安装路径,可以通过执行ps命令找到nginx程序的PID,然后kill其PID

ps -aux |grep nginx

 

 


2、查找根下所有名字包含nginx的文件

find / -name nginx

 

 

 

3、执行命令 rm -rf *删除nignx安装的相关文件

说明:全局查找往往会查出很多相关文件,但是前缀基本都是相同,后面不同的部分可以用*代替,以便快速删除~

[root@qll251 ~]# rm -rf /usr/local/sbin/nginx
[root@qll251 ~]# rm -rf /usr/local/nginx
[root@qll251 ~]# rm -rf /usr/src/nginx-1.11.1
[root@qll251 ~]# rm -rf /var/spool/mail/nginx
4、其他设置

如果设置了Nginx开机自启动的话,可能还需要下面两步

chkconfig nginx off

rm -rf /etc/init.d/nginx

删除之后,便可重新安装nginx了

 

重新安装nginx
1、下载nginx安装包
wget http://nginx.org/download/nginx-nginx-1.26.1.tar.gz

cd /home
2、把压缩包解压到/home
tar -zxvf nginx-1.26.1.tar.gz
3、切换到cd /home/nginx-1.26.1/下面
执行三个命令:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

如果要求升级openssl

系统是centos7.7,原生openssl版本是1.0.2k,已经对openssh和openssl做了编译安装,现在的版本是openssh8.3p1,openssl1.1.1t

以前我编译安装nginx是不带其他条件,如下

./configure --prefix=/usr/local/nginx

是因为服务器是新的,先编译安装的nginx,后升级的openssl

如上图,如果先升级openssl,再编译安装nginx,需要带上openssl源码路径,注意,是openssl源码路径,不是安装后的路径

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=/home/openssl-1.1.1w

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=/home/openssl-1.1.1w --with-http_gzip_static_module --with-file-aio --with-http_realip_module  --with-pcre=/usr/local/pcre --with-zlib=/usr/local/zlib

make && make install
4、切换到/usr/local/nginx安装目录

 

 

 


5、配置nginx的配置文件nginx.conf文件,主要也就是端口

 

可以按照自己服务器的端口使用情况来进行配置

ESC键,wq!强制保存并退出

6、启动nginx服务
切换目录到/usr/local/nginx/sbin下面

 

 

 

 

启动nginx命令:

./nginx
8、访问你的服务器IP
显示

 

 

 

 

location ^~/file/ {
#允许跨域请求的域,* 代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;


proxy_pass http://xxx/;
}

说明安装和配置都没问题OK了

9、nginx常用命令
1.启动nginx命点:./nginx
2.重启nginx命令:./nginx -s reload

3. 停止 nginx 命令: ./nginx -s stop 或 ./nginx -s quit
4. 关闭nginx进程:

ps -ef|grep nginx

命令 kill -9 8725 (进程号 上面的) 则关闭nginx

如果已经安装nginx

 

 

2 nginx SSL模块是否支持
查看nginx是否安装http_ssl_module模块
./nginx -V

如果看到我上图标记得 configure arguments: --with-http_ssl_module, 则已安装(可以直接跳过nginx安装ssl支持步骤,进入 nginx.conf 配置)。

3,nginx安装
3.1 nginx官网地址
下载地址:http://nginx.org/en/download.html
这里下载nginx-1.26.1.tar.gz

3.2 下载tar包到服务器目录
cd /home
wget http://nginx.org/download/nginx-1.26.1.tar.gz
3.3 解压安装包
tar -zxvf nginx-1.26.1.tar.gz
3.4 配置ssl模块
cd nginx-1.26.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
我们只需要执行以上命令即可,由于我服务器上还有其他模块依赖

3.5 接下来执行命令编译
使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。用新的 nginx 文件覆盖当前的 nginx 文件。


3.6 命令拷贝复制
cp ./objs/nginx /usr/local/nginx/sbin/

3.7 再次查看安装的模块(configure arguments: --with-http_ssl_module说明ssl模块已安装)。
./nginx -V
nginx version: nginx/1.26.1

configure arguments: –with-http_ssl_module

4. ssl 证书部署
下载申请好的 ssl 证书文件压缩包到本地并解压(这里是用的 pem 与 key 文件,文件名可以更改)。
在 nginx 目录新建 cert 文件夹存放证书文件。

cd /usr/local/nginx
mkdir cert

 

Nginx 提示host not found in upstream 错误解决方法

vi /etc/hosts
//oss配置

xx.xx.xx.xxx 你要配置的网站

 

Nginx ===> make: *** No rule to make target `build‘, needed by `default‘. Stop.

make: *** No rule to make target `build', needed by `default'. Stop.
make: *** 没有规则可以创建“default”需要的目标“build”。 停止。

原因分析:
缺少依赖

Nginx所需依赖包
预处理、编译、连接、汇编
gcc

用于网站加密通讯
openssl

用于支持解析正则表达式
pcre

用于对数据进行解压缩。网站之间通信时,数据先压缩再传输,通过消耗CPU的方式来节省网络带宽
zlib

解决方法:
安装依赖包
安装下面配置
yum -y install make zlib-devel gcc-c++ libtool openssl openssl-devel

# 或者

yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel

安装后验证
./configure

#或者

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module

编译
make && make install

其他:
如果这个方法还是不行,可以检查./configure后面的选项是否有误,或者选项中的路径是否正确,也可以看一下系统提示哪些是 —not found的,看缺少哪些依赖包

 

posted @ 2022-12-01 13:08  全琪俊  阅读(2536)  评论(0编辑  收藏  举报