Linux----Nginx安装配置
1. Nginx下载
1.1 官方网址
# Nginx官网
http://nginx.org/
# 推荐:下载地址
http://nginx.org/download/nginx-1.20.2.tar.gz
1.2 安装Nginx
1. 进入到usr中的src,把刚才下载的安装包拉进去
cd /usr/src/
2. 解压安装包
tar zxvf nginx-1.6.2.tar.gz
3. 进入安装包目录
cd nginx-1.6.2
4. 编译安装
./configure
make && make install
5. 在编译安装可能遇到的问题
在输入**./configure**后报错:最后一行会出现
configure: error: You need a C++ compiler for C++ support.
1
此时需要执行以下命令:
yum install -y gcc gcc-c++
1.3 完整HTTP--Nginx配置
user root; ############user www-data; 否则nginx没有权限访问静态资源文件
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 1024;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
default_type application/octet-stream;
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*; #######################此文件为nginx默认的监听80端口的文件,给注释掉 ,否则访问网站时不会把消息转发给下方配置的uwsgi端口
#######################以下为增加的内容##############
server {
listen 80 default_server; #监听80端口
server_name Homeowner;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 10.0.16.15:8888; #将信息转发给8080端口的uwsgi,和uwsgi.ini配置文件中的端口需要保持一致
uwsgi_read_timeout 600;
uwsgi_send_timeout 600;
uwsgi_connect_timeout 600;
}
#路径为/static的请求,直接从根目录的static文件夹中获取静态文件
location ~/static/ {
root /usr/local/nginx/html;
}
#路径为/media 的请求直接从根目录的media文件夹中获取静态文件(指django媒体文件-media)
#location /img {
# alias /root/www/homeowner/Homeowner/HomeownerEnv/lib/python3.11/site-packages/django/contrib/admin/static/img;
#}
}
}
1.4 常用命令
1. 启动
cd /usr/local/nginx/sbin/nginx
2. 停止
/usr/local/nginx/sbin/nginx -s stop
3. 重启
/usr/local/nginx/sbin/nginx -s reload
4. 查看版本及GCC及模块
/usr/local/nginx/sbin/nginx t
5. 配置文件预检测
/usr/local/nginx/sbin/nginx -t
2. SSL证书配置部署
2.1 确认开启443端口
2.2 下载证书文件
1. 腾讯SSL证书管理页面
https://console.cloud.tencent.com/ssl
2. 确认信息后,点击下载

3. 文件夹中包含4个文件
``cloud.tencent.com_bundle.crt 证书文件
``cloud.tencent.com_bundle.pem 证书文件(可忽略该文件)
``cloud.tencent.com.key 私钥文件
``cloud.tencent.com.csr CSR 文件
2.3 上传文件到Nginx目录
将已获取到的 cloud.tencent.com_bundle.crt证书文件和cloud.tencent.com.key私钥文件从本地目录拷贝到 Nginx 服务器的 /etc/nginx 目录(此处为 Nginx 默认安装目录,请根据实际情况操作)下
2.4 修改配置文件
找到Nginx的配置文件,如果找不到可以执行下面命令
nginx -t
编辑文件
vim /usr/loacl/nginx/conf/nginx.conf
Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on。
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name cloud.tencent.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate cloud.tencent.com_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root html;
index index.html index.htm;
}
}
执行命令,验证配置文件问题
nginx -t
重新加载Nginx
../sbin/nginx -s reload
重载成功,即可使用 https://cloud.tencent.com 进行访问。
2.5 HTTP自动跳转HTTPS的安全配置(可选)
2.5.1 五种跳转方法介绍
如果您需要将 HTTP 请求自动重定向到 HTTPS。您可以通过以下操作设置(任选一):
-
根据实际需求,选择以下配置方式:
-
在页面中添加 JS 脚本。
-
在后端程序中添加重定向。
-
通过 Web 服务器实现跳转。
-
Nginx 支持 rewrite 功能。若您在编译时没有去掉 pcre,您可在 HTTP 的 server 中增加
return 301 https://$host$request_uri;,即可将默认80端口的请求重定向为 HTTPS。修改如下内容:
2.5.2 Nginx安全配置
未添加注释的配置语句,按照下述配置即可。
由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on。
1. 修改配置文件
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name cloud.tencent.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate cloud.tencent.com_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root html;
index index.html index.htm;
}
}
# HTTP 自动跳转 HTTPS的安全配置
server {
listen 80;
#请填写绑定证书的域名
server_name cloud.tencent.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
2. 验证配置文件问题
nginx -t
3. 重载Nginx
../sbin/nginx -s reload
2.6 完整HTTPS--Nginx配置
user root; ############user www-data; 否则nginx没有权限访问静态资源文件
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 1024;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
default_type application/octet-stream;
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*; #######################此文件为nginx默认的监听80端口的文件,给注释掉 ,否则访问网站时不会把消息转发给下方配置的uwsgi端口
#######################以下为增加的内容##############
server {
listen 443 ssl; #监听80端口
server_name aicx365.com;
ssl_certificate /usr/local/nginx/aicx365.com_nginx/aicx365.com_bundle.crt;
ssl_certificate_key /usr/local/nginx/aicx365.com_nginx/aicx365.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 10.0.16.15:8888; #将信息转发给8080端口的uwsgi,和uwsgi.ini配置文件中的端口需要保持一致
uwsgi_read_timeout 600;
uwsgi_send_timeout 600;
uwsgi_connect_timeout 600;
}
#路径为/static的请求,直接从根目录的static文件夹中获取静态文件
location ~/static/ {
root /usr/local/nginx/html;
}
#路径为/media 的请求直接从根目录的media文件夹中获取静态文件(指django媒体文件-media)
#location /img {
# alias /root/www/homeowner/Homeowner/HomeownerEnv/lib/python3.11/site-packages/django/contrib/admin/static/img;
#}
}
server {
listen 80;
#请填写绑定证书的域名
server_name aicx365.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
}
3. 报错处理
6.1 Nginx 1.2.1不显示svg图片
1. 首先安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2. 安装 PCRE
2.1 下载
PCRE 作用是让 Nginx 支持 Rewrite 功能。
http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
进入到usr中的src,把刚才下载的安装包拉进去
cd /usr/src/
2.2 解压安装包
tar zxvf pcre-8.35.tar.gz
2.3 进入安装包目录
cd pcre-8.35
2.4 编译安装
./configure
make && make install
2.5 查看pcre版本
pcre-config --versio
3. 安装 Nginx1.6.2,可以根据上面Nginx下载中,直接下载1.20.2
3.1 下载Nginx
# Nginx官网
http://nginx.org/
# 推荐:下载地址
http://nginx.org/download/nginx-1.6.2.tar.gz
进入到usr中的src,把刚才下载的安装包拉进去
cd /usr/src/
3.2 解压安装包
tar zxvf nginx-1.6.2.tar.gz
3.3 进入安装包目录
cd nginx-1.6.2
3.4 编译安装
./configure
make && make install
4. 在编译安装可能遇到的问题
在输入**./configure**后报错:
最后一行会出现
configure: error: You need a C++ compiler for C++ support.
1
此时需要执行以下命令:
yum install -y gcc gcc-c++
5. 将mime.types 拷贝到 /etc/nginx/
cd /etc/
mkdir nginx
cp /usr/src/conf/mime.types ./nginx/
6.1 Nginx1.6.2 没安装SSL模块
报错信息
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:26
解决方案
1. 恢复之前的nginx配置文件
2. 下载模块
cd /usr/src/nginx-1.6.2
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
3. 备份原有已安装好的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
4. 停止现有的Nginx服务
/usr/local/nginx/sbin/nginx -s stop
5. 覆盖原有的Nginx,刚刚重新编译好的nginx在/user/src/nginx/nginx-1.6.2/objs里面
cp ./nginx /usr/local/nginx/sbin/
# 执行的时候会有个询问过程,询问你是否选择覆盖?此时输入 `yes` 然后按`Enter`就行了。
yes
# 回车
6. 查看是否配置成功
#查看 Nginx 版本就可以看到configure arguments: 后面有新的参数了,可见新增的SSL模块成功了
/usr/local/nginx/sbin/nginx -V
7.恢复上面的完整Nginx配置
8. 重启Nginx
/usr/local/nginx/sbin/nginx
6.2 Nginx1.6.2 版本老旧,不支持TLSv1.3
6.2.1 报错信息
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:26
6.2.2 报错原因
1. **Nginx 底层使用的密码库是 OpenSSL,也就是说是否支持 TLS 1.3 版本,取决于 OpenSSL 库**
1. OpenSSL 1.0.1以上的版本支持 TLS1.2
2. OpenSSL 1.1.1 及以上版本支持 TLS 1.3 版本
1. Nginx 1.13 以下的版本支持 TLS 1.2
2. Nginx 1.13 以上的版本支持 TLS 1.3
2. 查看Nginx和OpenSSL版本
/usr/local/nginx/sbin/nginx -V
openssl version -a
6.2.3 解决方案
1. 升级Nginx支持TLSv1.2 TLSv1.3
1. 下载需要更新的Nginx版本,解压
# 我是解压在本目录 如需指定目录解压添加 -C 指定目录
tar -zxvf nginx-1.20.2.tar.gz
2. 编译并make(不进行make install)
# 进入解压目录
cd ./nginx-1.20.2
# 进行配置
./configure
# 进行编译
make
# 编译完成后可以看到一个objs文件夹,进入到objs文件夹,里面有个nginx二进制文件
cd ./objs
2. 升级方法一
1. 备份安装目录下的nginx
cd /usr/local/nginx/sbin
mv nginx nginx.bak
2、复制objs目录下的nginx到当前sbin目录下
cp /var/src/nginx/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/
3、发送信号user2给nginx老版本对应的进程
kill -user2 'more /usr/local/logs/nginx.pid'
4、发送信号quit给nginx老版本的进程
kill -quit 'more /usr/local/nginx/logs/nginx.pid.oldbin'
5、查看是否升级成功
./nginx -v
2. 升级方法一
1. 备份安装目录下的nginx
cd /usr/local/nginx/sbin
mv nginx nginx.bak
2、复制objs目录下的nginx到当前sbin目录下
cp /var/src/nginx/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/
3、进入到安装目录,执行make upgrade
cd /var/src/nginx/nginx-1.20.2
make upgrade
4、查看是否升级成功
./nginx -v
2. 升级OpenSSL支持TLSv1.2 TLSv1.3
1. 下载需要更新的OpenSSL版本,解压
wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz
# 我是解压在本目录 如需指定目录解压添加 -C 指定目录
tar -xzvf openssl-1.1.1i.tar.gz
这里要是下载不了的话可以手动下载完了再用ftp拖到服务器中
2. 编译源码安装
cd openssl-1.1.1i
./config
make && make install
3. 然后另起一个服务器窗口,检查一下openssl版本
不出意外的话会报:openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误,执行下面命令:
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
3. Nginx 增加http_v2_module 模块
1. 查看Nginx原有模块
/usr/local/nginx/sbin/nginx -V
是否携带--with-http_v2_module
2. 下载模块
cd /var/src/nginx/nginx-1.20.2/
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module
有可能会报错:SSL modules require the OpenSSL library.You can either do not enable the modules
我的情况是系统自带了openssl 1.0.1,然后又自己装了openssl 1.1.1,就出这个问题了。然后执行:yum remove openssl-devel卸载就好了
3. 编译!!, 这里不要 make install !!!!!!!!!!
make
4. 停止Nginx服务
/usr/local/nginx/sbin/nginx -s stop
5. 备份原有已安装好的Nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
6. 覆盖原来的Nginx
cp /var/src/nginx/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/
7. 启动Nginx
/usr/local/nginx/sbin/nginx
4.Nginx 配置文件增加 TLSv1.3的配置
server {
# ...
ssl_protocols TLSv1.2 TLSv1.3;
# ...
}

浙公网安备 33010602011771号