安装Nginx并配置反向代理

一、简介

Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理、负载均衡等其他用途。以下是关于Nginx的一些重要特点和用途,以及为什么要使用Nginx的原因:

  1. 高性能和高并发能力:Nginx采用了异步非阻塞的事件驱动架构,能够处理大量并发请求,并具有较低的内存消耗。这使得它能够处理高流量和高负载的网站和应用程序,提供出色的性能和响应速度。

  2. 负载均衡:Nginx具有内置的负载均衡功能,可以将流量分发到多个后端服务器,以提高系统的可靠性和可扩展性。通过负载均衡,可以确保每个服务器能够平均分担负荷,避免单个服务器的过载问题。

  3. 反向代理:Nginx可以作为反向代理服务器,接收客户端请求,并将其转发到被代理的后端服务器。反向代理可以隐藏真实的服务器IP地址,提供更高的安全性,并在多个后端服务器之间均衡负载。

  4. 静态文件服务:Nginx通过快速高效地提供静态文件服务,可以显著减轻后端应用服务器的负载。它可以处理静态文件的请求,如HTML、CSS、JavaScript、图片等,减少了额外的服务器资源消耗。

  5. 缓存功能:Nginx支持缓存静态和动态内容,可以缓存经常访问的资源,提高用户的访问速度,并减轻后端服务器的负载。这对于处理大量的并发请求和频繁访问的内容非常有用。

  6. 可扩展性和模块化: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

解释上述代码中的每个命令:

  1. systemctl stop firewalld:停止 firewalld 服务。该命令用于停止正在运行的防火墙服务。
  2. systemctl disable firewalld:禁用 firewalld 服务。该命令用于禁用防火墙服务,以确保在系统重新启动时该服务不会自动启动。
  3. setenforce 0:将 SELinux 设置为宽松模式。SELinux 是一种安全强制访问控制机制,该命令将 SELinux 设置为不执行强制访问控制,允许更自由的操作。
  4. sed -i 's/enforcing/disabled/' /etc/selinux/config:通过使用 sed 命令,将 /etc/selinux/config 中的 enforcing 替换为 disabled。这将在系统重新启动后使 SELinux 保持禁用状态。
  5. 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 编译)。

  6. wget http://nginx.org/download/nginx-1.9.12.tar.gz:使用 wget 下载 Nginx 的源代码包。

  7. tar zxf nginx-1.9.12.tar.gz:将下载的 Nginx 源代码包解压缩。

  8. cd nginx-1.9.12:进入解压后的 Nginx 目录。

  9. ./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 模块)。

  10. make && make install:使用 make 命令编译并安装 Nginx。这将构建 Nginx 并将二进制文件和相关文件安装到指定的目录。

  11. /usr/local/nginx/sbin/nginx:启动 Nginx 服务。这将启动 Nginx Web 服务器。

  12. ps -ef | grep nginx:使用 psgrep 命令查找正在运行的 Nginx 进程。

  13. netstat -tnpl:使用 netstat 命令显示正在监听的网络端口和相关进程。

IP+端口号(默认80)访问:

 能看到如上信息就表示Ng已经安装成功了。

三、反向代理配置

找到nginx.conf配置文件,在里面添加一行:

# 在http模块里面添加一行

include /etc/nginx/conf.d/*.conf;

在Nginx的配置文件中,include /etc/nginx/conf.d/*.conf;是一个指令,用于包含指定目录下的所有.conf文件。

具体解释如下:

  1. include指令:在Nginx配置文件中,include指令用于将其他配置文件或配置片段包含到当前配置文件中。

  2. /etc/nginx/conf.d/:这是一个目录路径,表示Nginx配置文件所在的目录。通常,该目录用于存放要包含的子配置文件。

  3. .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代理服务器转发到内网IP 10.26.9.17 的 8900端口。
  • proxy_set_header:设置HTTP请求的头部信息,包括 HostX-Real-IPX-Forwarded-For 和 X-Forwarded-Proto
  • proxy_set_header Connection "":关闭后端服务器的HTTP Keep-Alive连接,以支持更高的并发性能。

通过以上配置,当收到来自 kqkq.test.com 的HTTP或HTTPS请求时,Nginx将根据配置将请求代理到指定的后端服务器,并将适当的头部信息进行转发。

注意:复制此示例模板需要修改以下三个地方:

  1. 域名:把原有的kqkq.test.com替换为自己的域名。
  2. SSL证书:证书名称和路径按自己实际情况修改。
  3. IP+端口:把原有的10.26.9.17:8900替换为自己想要代理的IP+端口。
  4. 完事了记得重启:/usr/local/nginx/sbin/nginx -s reload

这只是一个基本的示例,实际操作可能还需要根据您的系统和需求进行一些额外步骤和配置。在执行每个步骤时,确保仔细检查输出和错误提示,如果遇到问题,请参考Nginx官方文档或社区资源进行更详细的指导和解决方案。

希望这篇博客能对你有所帮助!若有其他问题,欢迎继续咨询,祝您生活愉快。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值