阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS7 下 Nginx 安装部署和配置

447次阅读
没有评论

共计 8551 个字符,预计需要花费 22 分钟才能阅读完成。

1、什么是 Nginx
Nginx(“enginex”)是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下 Nginx 是 Apache 服务器不错的替代品. 其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好. 目前中国大陆使用 nginx 网站用户有:新浪、网易、腾讯,另外知名的微网志 Plurk 也使用 nginx。
Nginx 作为负载均衡服务器, 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP 代理服务器对外进行服务。Nginx 采用 C 进行编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好很多。
Nginx 作为邮件代理服务器, 是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器)。
Nginx 是一个安装非常简单,配置文件非常简洁(还能够支持 perl 语法),Bugs 非常少的服务器;Nginx 启动特别容易,并且几乎可以做到 7 *24 不间断运行,即使运行数个月也不需要重新启动, 还能够不间断服务的情况下进行软件版本的升级。

2、Nginx 的安装
2.1、Nginx 安装包下载
Nginx 包下载地址:
http://nginx.org/download/nginx-1.8.0.tar.gz

Nginx 依赖包下载地址:
1.gzip 模块需要 zlib 库 (在 http://www.zlib.net/ 下载 http://zlib.net/zlib-1.2.8.tar.gz)
2.rewrite 模块需要 pcre 库(在 http://www.pcre.org/ 下载 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/)
3.ssl 功能需要 openssl 库(在 http://www.openssl.org/ 下载 http://www.openssl.org/source/openssl-fips-2.0.9.tar.gz)
或者下载全包 openssl-1.0.2o.tar

2.2、Nginx 安装
安装前确认 linux 下这些库已经安装
yum install perl
yum install gcc
yum install gcc-c++
yum -y install net-tools

1. 将安装包放到 /home/nginx_install 目录下,截图如下:
CentOS7 下 Nginx 安装部署和配置

2. 安装 openssl-fips-2.0.9.tar.gz,执行命令如下
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。,安装 OpenSSL(http://www.openssl.org/source/)主要是为了让 tengine 支持 Https 的访问请求。具体是否安装看需求。

cd /home/nginx_install
tar -zxvf openssl-1.0.2o.tar.gz
cd openssl-1.0.2o
#prefix 配置安装路径
./config –prefix=/opt/ldkjdata/nginx/openssl-1.0.2o
make
make install

openssl:wget http://www.openssl.org/source/openssl-0.9.8m.tar.gz 解压不 make
最新版本为 openssl-1.0.2o.tar

3. 安装 zlib-1.2.8.tar.gz
Zlib 是提供资料压缩之用的函式库,当 Tengine 想启用 GZIP 压缩的时候就需要使用到 Zlib(http://www.zlib.net/)

cd /home/nginx_install
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure –prefix=/opt/ldkjdata/nginx/zlib-1.2.11
make
make install

4. 安装 pcre-8.37.tar.gz
PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx rewrite 依赖于 PCRE 库,所以在安装 Tengine 前一定要先安装 PCRE,最新版本的 PCRE 可在官网(http://www.pcre.org/)获取。

cd /home/nginx_install
tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure –prefix=/opt/ldkjdata/nginx/pcre-8.42
make
make install

5. 安装 nginx-1.8.0.tar.gz

cd /home/nginx_install
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0

#with-pcre 指定依赖包位置,prefix 配置安装路径
./configure –with-pcre=../pcre-8.42 –with-zlib=../zlib-1.2.11 –with-openssl=../openssl-fips-2.0.16 –prefix=/opt/ldkjdata/nginx/nginx-1.14.0

或者
./configure –with-pcre=../pcre-8.42 –with-zlib=../zlib-1.2.11 –with-openssl=../openssl-1.0.2o –with-http_ssl_module –prefix=/opt/ldkjdata/nginx/nginx-1.14.0

make
make install

3、Nginx 检测
cd /opt/ldkjdata/nginx/nginx-1.14.0/sbin
./nginx -t
看到如下提示, 表示安装成功。
nginx: the configuration file /opt/ldkjdata/nginx/nginx-1.14.0/conf/nginx.conf syntax is ok
nginx: configuration file /opt/ldkjdata/nginx/nginx-1.14.0/conf/nginx.conf test is successful

4.Nginx 启动和端口查看

cd /opt/ldkjdata/nginx/nginx-1.14.0/sbin
./nginx 启动
./nginx -s stop 停止
./nginx -s reload 修改配置后重新加载配置
netstat -ntlp 查看 tcp 是否正常监听

5. 一个简单的 Nginx 转发例子
1. 需求
短信服务器列表三台,提供服务的地址如下:

http://192.168.88.21:8091/smsserver/services/sendSms?wsdl
http://192.168.88.22:8091/smsserver/services/sendSms?wsdl
http://192.168.88.23:8091/smsserver/services/sendSms?wsdl
彩信服务器列表三台,提供服务的地址如下:

http://192.168.88.21:8092/msserver/services/sendMms?wsdl
http://192.168.88.22:8092/mmsserver/services/sendMms?wsdl
http://192.168.88.23:8092/mmsserver/services/sendMms?wsdl

Nginx 安装在另外一台单独机器上(公网 IP 为 public_ip),对外提供服务地址如下:
http://public_ip:8090/smsserver/services/sendSms?wsdl 短信发送服务
http://public_ip:8090/mmsserver/services/sendMms?wsdl 彩信发送服务

2. 对于以上需求,配置 /opt/nginx-1.8.0/conf/nginx.conf 如下:
#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;
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;
# 设定请求缓冲,start
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
# 设定请求缓冲,end

# 设定提供服务的服务器,start
# 短信发送服务器
upstream smsserver{
#weigth 表示权重,权值越大,分配几率越大
#max_fails 当有 max_fails 个请求失败,就表示后端的服务器不可用,默认为 1,将其设置为 0 可以关闭检查
#fail_timeout 在以后的 fail_timeout 时间内 nginx 不会再把请求发往已检查出标记为不可用的服务器
server 192.168.88.21:8091 weight=5 max_fails=5 fail_timeout=600s;
server 192.168.88.22:8091 weight=5 max_fails=5 fail_timeout=600s;
server 192.168.88.23:8091 weight=5 max_fails=5 fail_timeout=600s;
}
# 彩信发送服务器
upstream mmsserver{
#weigth 表示权重,权值越大,分配几率越大
#max_fails 当有 max_fails 个请求失败,就表示后端的服务器不可用,默认为 1,将其设置为 0 可以关闭检查
#fail_timeout 在以后的 fail_timeout 时间内 nginx 不会再把请求发往已检查出标记为不可用的服务器
server 192.168.88.21:8092 weight=5 max_fails=5 fail_timeout=600s;
server 192.168.88.22:8092 weight=5 max_fails=5 fail_timeout=600s;
server 192.168.88.23:8092 weight=5 max_fails=5 fail_timeout=600s;
}
# 设定提供服务的服务器,end

#gzip on;

server {
listen 8090;
server_name localhost;
# 设定请求转发规则,start
# 规则采用最长匹配,/smsserver/* 优先匹配 /smsserver,/mmsserver/* 优先匹配 /mmsserver,/aaaaaaaa/* 因为没有任何匹配,最后匹配到 /
# 规则一
location / {
proxy_pass http://localhost:80;
}
# 规则二
location /smsserver {
proxy_pass http://smsserver;
}
# 规则三
location /mmsserver {
proxy_pass http://mmsserver;
}
# 设定请求转发规则,end
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

server {
listen 80;
server_name localhost;
# 设定请求转发规则,start
location / {
# 定义服务器的默认网站根目录位置
root /home/work/statichtml/index.html;
# 定义首页索引文件的名称
#index index.php index.html index.htm;
# 请求转向 orderServer 定义的服务器列表
# proxy_pass http://server;

# 以下是一些反向代理的配置可删除.
# proxy_redirect off;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 允许客户端请求的最大单文件字节数
# client_max_body_size 10m;
# 缓冲区代理缓冲用户端请求的最大字节数,
# client_body_buffer_size 128k;
#nginx 跟后端服务器连接超时时间(代理连接超时)
# proxy_connect_timeout 90;
# 后端服务器数据回传时间(代理发送超时)
# proxy_send_timeout 90;
# 连接成功后,后端服务器响应时间(代理接收超时)
# proxy_read_timeout 90;
# 设置代理服务器(nginx)保存用户头信息的缓冲区大小
# proxy_buffer_size 4k;
#proxy_buffers 缓冲区,网页平均在 32k 以下的话,这样设置
# proxy_buffers 4 32k;
# 高负荷下缓冲大小(proxy_buffers*2)
# proxy_busy_buffers_size 64k;
# 设定缓存文件夹大小,大于这个值,将从 upstream 服务器传
# proxy_temp_file_write_size 64k;
}
# 设定请求转发规则,end
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

6. 例子 2(暴露接口,但隐藏 web 项目的根目录)
上面 6 中例子有个问题是,直接将我整个 web 根目录 smsserver 和 mmsserver 暴露到公网了,其实我的目的只是想暴露两个接口地址,所以 6 有待优化,举个例子如下:
1. 需求
接口服务器列表两台台,提供服务的地址如下:
接口一:
http://192.168.88.21:8082/myweb/interface/getData
http://192.168.88.22:8082/myweb/interface/getData
接口二:
http://192.168.88.21:8082/myweb/interface/sendData
http://192.168.88.22:8082/myweb/interface/sendData

Nginx 安装在另外一台单独机器上(公网 IP 为 public_ip),对外提供服务地址如下:
http://public_ip:8081/myweb/interface/getData 接口一
http://public_ip:8081/myweb/interface/sendData 接口二
2. 对于以上需求,配置 /opt/nginx-1.8.0/conf/nginx.conf 如下:

#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;
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;
# 设定请求缓冲,start
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
# 设定请求缓冲,end

# 设定提供服务的服务器,start
# 我的接口服务器,两台
upstream myweb{
#weigth 表示权重,权值越大,分配几率越大
#max_fails 当有 max_fails 个请求失败,就表示后端的服务器不可用,默认为 1,将其设置为 0 可以关闭检查
#fail_timeout 在以后的 fail_timeout 时间内 nginx 不会再把请求发往已检查出标记为不可用的服务器
server 192.168.88.23:8082 weight=5 max_fails=5 fail_timeout=600s;
server 192.168.88.24:8082 weight=5 max_fails=5 fail_timeout=600s;
}
# 设定提供服务的服务器,end

#gzip on;

server {
listen 80;
server_name localhost;
# 设定请求转发规则,start
# 规则采用最长匹配,即长度最长优先匹配,最后不匹配的走 / 进行匹配
# 规则一
location / {
root html;
index index.html index.htm;
}
# 设定请求转发规则,end
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

server {
listen 8081;
server_name localhost;
# 设定请求转发规则,start
# 规则采用最长匹配,即长度最长优先匹配,最后不匹配的走 / 进行匹配
# 规则一
location / {
root html;
index index.html index.htm;
}
# 规则二,查询接口一
location /myweb/interface/getData {
proxy_pass http://myweb;
# 转发请求的原 IP 地址,程序中通过 request.getHeader(“Proxy-Client-IP”)获得 ip
proxy_set_header Host $host;
# 如果是有涉及 redirect 的服务,一定要加上端口 8081,否则默认 tomcat 在 redirect 时候默认找 80 端口
#proxy_set_header Host $host:8081;
proxy_set_header Proxy-Client-IP $remote_addr;
}
# 规则三,查询接口二
location /myweb/interface/sendData {
proxy_pass http://myweb;
# 转发请求的原 IP 地址,程序中通过 request.getHeader(“Proxy-Client-IP”)获得 ip
proxy_set_header Host $host;
# 如果是有涉及 redirect 的服务,一定要加上端口 8081,否则默认 tomcat 在 redirect 时候默认找 80 端口
#proxy_set_header Host $host:8081;
proxy_set_header Proxy-Client-IP $remote_addr;
}
# 设定请求转发规则,end
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

7. 例子 3 文件映射
/conf/nginx.conf 中第一行的运行用户改为
user root;
location /uploadfile {
root /opt/staticdata/;
access_log /opt/nginx/logs/upload_access.log;
proxy_store_access user:rw group:rw all:rw;
}

当访问 http://ip:port/uploadfile/aa/bb/cc.jpg
相当于访问 /opt/staticdata/uploadfile/aa/bb/cc.jpg

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8551字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994028
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...