请允许我按照标准的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已经可以反向代理访问这三台服务器上的应用程序,通过负载均衡来分配流量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡) - Python技术站