问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

技术胖教你从零开始搭建Nginx Web服务器

创作时间:
作者:
@小白创作中心

技术胖教你从零开始搭建Nginx Web服务器

引用
CSDN
15
来源
1.
https://blog.csdn.net/Da_zhenzai/article/details/140456495
2.
https://blog.csdn.net/YYuea/article/details/129316174
3.
https://blog.csdn.net/qq_39071254/article/details/144615583
4.
https://blog.csdn.net/m0_73774439/article/details/138562854
5.
https://blog.csdn.net/weixin_47110096/article/details/135741324
6.
https://blog.csdn.net/weixin_47025166/article/details/126047843
7.
https://zhuanlan.zhihu.com/p/102528726
8.
http://nginx.org/cn/download.html
9.
https://nginx.p2hp.com/en/download.html
10.
https://developer.aliyun.com/article/1443902
11.
https://www.cnblogs.com/iSun520/p/18359037
12.
https://nginx.org/cn/
13.
https://www.sysgeek.cn/install-nginx-ubuntu/
14.
https://help.fanruan.com/finebi/doc-view-536.html
15.
https://help.fanruan.com/finereport/doc-view-3708.html

Nginx(发音为“engine x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。由于其高效、稳定和低资源消耗的特点,Nginx被广泛用于高流量的网站和应用程序中。

01

一、Nginx简介

Nginx是由俄罗斯开发者Igor Sysoev创建的一款轻量级、高性能的Web服务器。它首次发布于2004年,如今已成为全球最受欢迎的Web服务器之一。Nginx以其卓越的性能和灵活性而闻名,适用于静态和动态内容的服务,以及负载均衡和反向代理等多种应用场景。

02

二、为什么选择Nginx?

Nginx之所以备受青睐,有以下几个显著的优势:

  • 高性能:Nginx的事件驱动架构使其在处理大量并发连接时表现出色。
  • 低资源消耗:相较于传统服务器软件,Nginx的内存消耗较低,能够高效利用系统资源。
  • 可扩展性:Nginx支持模块化架构,可以通过添加模块来扩展其功能,满足各种需求。
  • 负载均衡:Nginx作为负载均衡器,能够平衡多个服务器之间的流量,提高系统的可用性和稳定性。
  • 反向代理:Nginx可以作为反向代理服务器,将请求转发到后端服务器,隐藏真实服务器的细节,提高安全性。
03

三、安装Nginx

Ubuntu系统安装

在开始安装Nginx之前,确保您已经完成了一些必要的准备工作。这包括更新系统软件包列表和安装所需的依赖项。

在终端中执行以下命令,以确保您的系统软件包列表是最新的:

sudo apt update

升级系统以应用最新的安全更新和功能改进:

sudo apt upgrade

在安装Nginx之前,您可能需要安装一些依赖项,以确保Nginx能够正常运行。一般来说,这些依赖项已经在Ubuntu系统中安装,但为了确保完整性,您可以运行以下命令:

sudo apt install -y curl gnupg2 ca-certificates lsb-release

通过这些步骤,您的系统将会是最新的,并且具备了安装Nginx所需的基本条件。

执行以下命令以安装Nginx:

sudo apt install -y nginx

这会下载并安装Nginx及其相关组件。

-y选项表示在安装过程中不询问任何确认,直接进行安装。

安装完成后,可以使用以下命令启动Nginx服务:

sudo systemctl start nginx

确保Nginx在系统启动时自动启动,可以执行以下命令:

sudo systemctl enable nginx

现在,Nginx已成功安装并正在运行。您可以通过在浏览器中输入服务器的IP地址或域名来验证Nginx是否正常工作。如果一切正常,您将看到Nginx的欢迎页面。

CentOS系统安装

在CentOS上安装Nginx,通常可以通过两种方式:使用YUM包管理器安装(适用于官方仓库或EPEL仓库中包含的Nginx版本),或者从源代码编译安装(适用于需要特定版本或自定义Nginx的情况)。以下是两种安装方法的详细步骤:

使用YUM包管理器安装Nginx

这种方法相对简单快捷,适合大多数用户。以下是安装步骤:

  1. 安装EPEL仓库(如果Nginx不在默认的CentOS仓库中):
sudo yum install epel-release
  1. 安装Nginx:
sudo yum install nginx
  1. 启动Nginx服务:
sudo systemctl start nginx
  1. 检查Nginx服务状态:
sudo systemctl status nginx
  1. 设置Nginx开机自启:
sudo systemctl enable nginx
  1. 配置防火墙(如果服务器启用了防火墙):
  • 对于firewalld:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
  • 对于iptables,请根据实际情况配置规则以允许TCP 80端口。
  1. 访问Nginx:

使用浏览器访问服务器的IP地址或域名(默认监听80端口),应该能看到Nginx的欢迎页面。

04

四、Nginx配置详解

Nginx的配置文件位于/etc/nginx目录下,其中最主要的配置文件是nginx.conf。我们将学习如何修改默认网站配置并添加新的虚拟主机。

打开/etc/nginx/nginx.conf文件,了解Nginx的主要配置结构。Nginx的配置文件采用块结构,主要分为events、http和servers等块。在http块中,会包含全局的HTTP配置,而servers块包含了虚拟主机的配置。

user www-data;
worker_processes auto;
...
http {
    ...
    server {
        listen 80;
        server_name example.com;
        ...
    }
    ...
}

默认情况下,Nginx配置文件中包含一个默认的虚拟主机配置,监听80端口。您可以通过修改此配置来更改默认网站的行为。打开/etc/nginx/sites-available/default文件:

sudo nano /etc/nginx/sites-available/default

您可以修改配置中的内容,如更改根目录、添加或修改server_name等选项。保存并退出后,重新加载Nginx以应用更改:

sudo systemctl reload nginx

要添加新的虚拟主机,首先在/etc/nginx/sites-available/目录下创建一个新的配置文件。例如,创建一个名为mywebsite的配置文件:

sudo nano /etc/nginx/sites-available/mywebsite

在新文件中添加虚拟主机配置:

server {
    listen 80;
    server_name mywebsite.com;
    root /var/www/mywebsite;
    index index.html;
}

保存并退出编辑器。然后,创建一个符号链接到sites-enabled目录,以启用新配置:

sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/

最后,重新加载Nginx以应用新配置:

sudo systemctl reload nginx
05

五、实战案例

反向代理和负载均衡配置

假设我们有多个Tomcat服务器,需要通过Nginx进行反向代理和负载均衡。以下是具体的配置示例:

http {
    ...
    upstream tomcat_server {
        server 192.168.80.100:8080 weight=1;
        server 192.168.80.101:8080 weight=1;
        server 192.168.80.101:8081 weight=1;
    }
    server {
        listen 80;
        server_name www.kgc.com;
        charset utf-8;

        location ~ .*\.jsp$ {
            proxy_pass http://tomcat_server;
            proxy_set_header HOST $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
            root /usr/local/nginx/html/img;
            expires 10d;
        }

        location / {
            root html;
            index index.html index.htm;
        }
    }
}

静态资源和动态请求分离

在实际应用中,我们通常需要将静态资源和动态请求分开处理。以下是一个示例配置:

server {
    listen 80;
    server_name example.com;

    location /static/ {
        alias /var/www/static/;
        expires 30d;
    }

    location / {
        proxy_pass http://backend_server;
        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;
    }
}
06

六、常见问题及解决方案

  1. 启动Nginx
cd /usr/local/nginx/sbin
./nginx
  1. 停止Nginx
cd /usr/local/nginx/sbin
./nginx -s stop

也可使用kill停止进程:

kill -9 nginx进程ID
  1. 重启Nginx
cd /usr/local/nginx/sbin
./nginx -s reload
  1. 设置重定向

需要修改的文件是nginx.conf【一通常情况下在/usr/local/nginx/conf/nginx.conf】,在server中添加代码location为重定向后的路径,{}中为原地址:

server {
    listen      8080;
    server_name  localhost;

    location /aaa/bbb/ {
        alias   /ccc/ddd/eee/fff/;
    }
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

注:修改conf文件保存后要重启nginx!

  1. 设置请求大小【文件上传大小】
上传文件大小相关的有三个配置
* client_body_buffer_size 配置请求体缓存区大小, 不配的话,
* client_body_temp_path 设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中
* client_max_body_size 设置上传文件的最大值
通常情况修改 client_max_body_size 就可以解决请求413的问题
server {
        listen      7980;
        server_name  localhost;
        client_max_body_size  500M;	*需要多大就把阈值改为多大
    }

注:修改conf文件保存后要重启nginx!

通过以上内容,您应该能够从零开始搭建和配置Nginx Web服务器。Nginx的配置文件结构清晰,指令丰富,能够满足各种复杂的Web服务器需求。通过合理配置,可以充分发挥Nginx的高性能和高并发处理能力。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号