Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)

  

请允许我按照标准的markdown格式文本来详细讲解 “Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)”。

Nginx 安装笔记

系统环境

操作系统为CentOS 7。

安装Nginx

使用yum命令安装Nginx:

sudo yum -y install nginx

配置Nginx

启动Nginx服务

使用systemctl命令启动Nginx服务并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

PHP支持

安装PHP和PHP-fpm:

sudo yum -y install php php-fpm

在Nginx配置文件中添加PHP支持,修改/etc/nginx/nginx.conf文件:

http {
    server {
        ...
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
         }
        ...
    }
}

重新加载Nginx配置文件并重启Nginx服务:

sudo nginx -t
sudo systemctl restart nginx

虚拟主机

在Nginx的配置文件中添加虚拟主机的配置,如下所示:

http {
    server {
        listen       80;
        server_name  example.com;
        root         /usr/share/nginx/html/example;

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

其中,example.com为域名,在本地hosts文件中指向127.0.0.1;/usr/share/nginx/html/example为指向虚拟主机的目录。

反向代理和负载均衡

在Nginx的配置文件中添加反向代理和负载均衡的配置,如下所示:

http {
    upstream backend {
        server backend1.example.com weight=5;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        ...
        location / {
            proxy_pass         http://backend;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        ...
    }
}

其中,backend1.example.com、backend2.example.com、backend3.example.com为后端服务器的域名或IP地址;weight=5表示分配5倍的负载均衡权重。

示例说明

示例一:虚拟主机

假设你的域名为example.com,在本地hosts文件中添加:

127.0.0.1 example.com

在/usr/share/nginx/html/目录下创建example目录,并在其中添加index.html文件,内容可以为:

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to example.com</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>Welcome to example.com!</p>
</body>
</html>

重新加载Nginx配置文件并重启Nginx服务:

sudo nginx -t
sudo systemctl restart nginx

打开浏览器并访问http://example.com,即可看到内容为Hello World!的网页。

示例二:反向代理负载均衡

假设你有三台后端服务器,分别为backend1.example.com、backend2.example.com、backend3.example.com,这三台服务器可以是不同的IP地址或都在同一个局域网中。在这三台服务器上,分别部署相同的PHP应用程序,PHP程序的端口为8765。

修改Nginx配置文件,使之能够反向代理访问这三台服务器上的应用程序:

http {
    upstream backend {
        server backend1.example.com:8765 weight=5;
        server backend2.example.com:8765;
        server backend3.example.com:8765;
    }

    server {
        ...
        location / {
            proxy_pass         http://backend;
            proxy_set_header   Host $host;
            ...
        }
        ...
    }
}

重新加载Nginx配置文件并重启Nginx服务:

sudo nginx -t
sudo systemctl restart nginx

现在,Nginx已经可以反向代理访问这三台服务器上的应用程序,通过负载均衡来分配流量。

相关文章