一、简介
Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理、负载均衡等其他用途。以下是关于Nginx的一些重要特点和用途,以及为什么要使用Nginx的原因:
-
高性能和高并发能力:Nginx采用了异步非阻塞的事件驱动架构,能够处理大量并发请求,并具有较低的内存消耗。这使得它能够处理高流量和高负载的网站和应用程序,提供出色的性能和响应速度。
-
负载均衡:Nginx具有内置的负载均衡功能,可以将流量分发到多个后端服务器,以提高系统的可靠性和可扩展性。通过负载均衡,可以确保每个服务器能够平均分担负荷,避免单个服务器的过载问题。
-
反向代理:Nginx可以作为反向代理服务器,接收客户端请求,并将其转发到被代理的后端服务器。反向代理可以隐藏真实的服务器IP地址,提供更高的安全性,并在多个后端服务器之间均衡负载。
-
静态文件服务:Nginx通过快速高效地提供静态文件服务,可以显著减轻后端应用服务器的负载。它可以处理静态文件的请求,如HTML、CSS、JavaScript、图片等,减少了额外的服务器资源消耗。
-
缓存功能:Nginx支持缓存静态和动态内容,可以缓存经常访问的资源,提高用户的访问速度,并减轻后端服务器的负载。这对于处理大量的并发请求和频繁访问的内容非常有用。
-
可扩展性和模块化:Nginx具有丰富的模块化架构,使其可以根据需要进行扩展和定制。通过添加适当的模块,可以实现额外的功能和扩展,满足不同的需求。
总的来说,使用Nginx可以提供高性能、高并发、高可用性的服务,同时有效地减轻后端服务器的负载。它是一款非常流行和可靠的Web服务器软件,被广泛应用于处理大规模和高流量的网站和应用程序。
二、安装
本次安装方式使用的是源码安装:
# 关闭防火墙和内核安全机制
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config
# 安装所需的工具和依赖
[root@localhost ~]# yum -y install vim wget net-tools gcc make openssl openssl-devel pcre-devel zlib zlib-devel
# 下载并解压缩 Nginx(Ng版本可以自行选择)
[root@localhost ~]# wget http://nginx.org/download/nginx-1.9.12.tar.gz
[root@localhost ~]# tar zxf nginx-1.9.12.tar.gz
# 进入解压后的 Nginx 目录
[root@localhost ~]# cd nginx-1.9.12
# 配置和安装 Nginx
[root@localhost ~]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module
[root@localhost ~]# make && make install
# 启动 Nginx 服务
[root@localhost ~]# /usr/local/nginx/sbin/nginx
# 查看进程
[root@localhost ~]# netstat -tnpl
[root@localhost ~]# ps -ef | grep nginx
解释上述代码中的每个命令:
systemctl stop firewalld
:停止firewalld
服务。该命令用于停止正在运行的防火墙服务。systemctl disable firewalld
:禁用firewalld
服务。该命令用于禁用防火墙服务,以确保在系统重新启动时该服务不会自动启动。setenforce 0
:将 SELinux 设置为宽松模式。SELinux 是一种安全强制访问控制机制,该命令将 SELinux 设置为不执行强制访问控制,允许更自由的操作。sed -i 's/enforcing/disabled/' /etc/selinux/config
:通过使用sed
命令,将/etc/selinux/config
中的enforcing
替换为disabled
。这将在系统重新启动后使 SELinux 保持禁用状态。-
yum -y install vim wget net-tools gcc make openssl openssl-devel pcre-devel zlib zlib-devel
:使用yum
包管理器安装所需的工具和依赖项。这些包括 Vim 编辑器、wget、net-tools(用于网络诊断)、gcc、make(用于编译源代码)、openssl、openssl-devel、pcre-devel 和 zlib-devel(用于 Nginx 编译)。 -
wget http://nginx.org/download/nginx-1.9.12.tar.gz
:使用wget
下载 Nginx 的源代码包。 -
tar zxf nginx-1.9.12.tar.gz
:将下载的 Nginx 源代码包解压缩。 -
cd nginx-1.9.12
:进入解压后的 Nginx 目录。 -
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module
:运行configure
脚本,配置 Nginx 的安装选项,如安装目录、主二进制文件路径、配置文件路径、进程 ID 文件路径和启用的模块(这里启用了 HTTP SSL 模块)。 -
make && make install
:使用make
命令编译并安装 Nginx。这将构建 Nginx 并将二进制文件和相关文件安装到指定的目录。 -
/usr/local/nginx/sbin/nginx
:启动 Nginx 服务。这将启动 Nginx Web 服务器。 -
ps -ef | grep nginx
:使用ps
和grep
命令查找正在运行的 Nginx 进程。 -
netstat -tnpl
:使用netstat
命令显示正在监听的网络端口和相关进程。
IP+端口号(默认80)访问:
能看到如上信息就表示Ng已经安装成功了。
三、反向代理配置
找到nginx.conf配置文件,在里面添加一行:
# 在http模块里面添加一行
include /etc/nginx/conf.d/*.conf;
在Nginx的配置文件中,include /etc/nginx/conf.d/*.conf;是一个指令,用于包含指定目录下的所有.conf文件。
具体解释如下:
-
include指令:在Nginx配置文件中,include指令用于将其他配置文件或配置片段包含到当前配置文件中。
-
/etc/nginx/conf.d/:这是一个目录路径,表示Nginx配置文件所在的目录。通常,该目录用于存放要包含的子配置文件。
-
.conf:这是一个通配符,表示匹配目录下所有以.conf为扩展名的文件。因此,include /etc/nginx/conf.d/.conf;指示Nginx包含该目录下的所有.conf文件。
mkdir -p /etc/nginx/conf.d
cd /etc/nginx/conf.d
vim kqkq.test.conf
只是做个域名而已,如果没有什么特殊要求,直接复制下面的模板就行:
server {
listen 80;
listen 443 ssl http2;
server_name kqkq.test.com;
ssl_certificate /mnt/server/ssl/test.com/fullchain.pem;
ssl_certificate_key /mnt/server/ssl/test.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://10.26.9.17:8900;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "";
}
}
上述代码是一个 Nginx 服务器配置块,它定义了一个虚拟主机(server
)来处理来自特定域名 datasearch.laifuyun.com
的请求。下面是对每个配置项的解释:
listen 80;
:监听80端口,用于处理HTTP请求。listen 443 ssl http2;
:监听443端口,并启用SSL和HTTP/2协议。SSL是用于加密传输的安全套接字层协议,而HTTP/2是新一代的HTTP协议,提供更高的性能和安全性。server_name kqkq.test.com;
:配置此虚拟主机的域名为kqkq.test.com
。
接下来的几行配置SSL相关的参数:
ssl_certificate
:指定SSL证书的路径。ssl_certificate_key
:指定SSL私钥的路径。ssl_session_timeout
:指定SSL会话的超时时间。
接下来的几行配置SSL协议和加密算法:
ssl_protocols
:指定支持的SSL协议版本。ssl_ciphers
:指定支持的加密套件列表。这里使用的是AES-GCM加密套件,并排除了一些较弱的加密套件。ssl_prefer_server_ciphers
:启用服务器端加密套件优先级。
最后是 location
块,配置了请求的代理和转发:
proxy_pass
:将请求代理到指定的后端服务器。这里将请求通过HTTP代理服务器转发到内网IP10.26.9.17
的 8900端口。proxy_set_header
:设置HTTP请求的头部信息,包括Host
、X-Real-IP
、X-Forwarded-For
和X-Forwarded-Proto
。proxy_set_header Connection ""
:关闭后端服务器的HTTP Keep-Alive连接,以支持更高的并发性能。
通过以上配置,当收到来自 kqkq.test
.com
的HTTP或HTTPS请求时,Nginx将根据配置将请求代理到指定的后端服务器,并将适当的头部信息进行转发。
注意:复制此示例模板需要修改以下三个地方:
- 域名:把原有的kqkq.test.com替换为自己的域名。
- SSL证书:证书名称和路径按自己实际情况修改。
- IP+端口:把原有的
10.26.9.17:8900替换为自己想要代理的IP+端口。
完事了记得重启:
/usr/local/nginx/sbin/nginx -s reload
这只是一个基本的示例,实际操作可能还需要根据您的系统和需求进行一些额外步骤和配置。在执行每个步骤时,确保仔细检查输出和错误提示,如果遇到问题,请参考Nginx官方文档或社区资源进行更详细的指导和解决方案。
希望这篇博客能对你有所帮助!若有其他问题,欢迎继续咨询,祝您生活愉快。