虚拟服务器
通过实例来讲解:
[root@test11 ~]# vim /etc/nginx/conf.d/vhost/example.conf
server
{
listen 80; #监听的端口
server_name www.example.org;
index index.html index.htm index.php;
root /app/example/webroot;
location / { #location根据请求URI将流量发送到不同的代理或提供不同的文件
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/dev/shm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; ##脚本文件请求的路径
}
# security
location ~ "/\." {
return 404; #如果访问的是隐藏文件的就返回404的状态码
}
location ~ "robots\.txt|favicon\.ico" {
log_not_found off;
}
access_log /app/logs/example/access.log main;
error_log /app/logs/example/error.log;
}
虚拟服务器比较重要的一个点是location,下面详细讲解一下location的匹配规则,如下:
反向代理
通过实例来讲解:
server
{
listen 80;
server_name www.example.com;
return 301 https://$host$request_uri; #301强制跳转到https
}
#当然也可以不用https,只单纯的http代理
server
{
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/pki/tls/certs/example.com.crt;
ssl_certificate_key /etc/pki/tls/private/example.com.key;
allow 192.168.0.0/16; #只允许哪些网段访问
deny all;
location / {
proxy_redirect http://www.example.com:8080 http://www.example.com #重定向被代理服务器的url
proxy_set_header Host $host; #通过设置Host变量,将需传递值赋给Host变量
proxy_set_header X-Real-IP $remote_addr; #在web服务器端获得用户的真实ip
proxy_set_header REMOTE-HOST $remote_addr; #
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#如果一个HTTP请求到达服务器之前,经过代理服务器,那么按照 XFF 标准,服务端最终会收到X-Forwarded-For: IP0(用户ip), IP1(proxy ip)
#如果要获取用户端的真实IP,应该从请求头中的 X-Forwarded-For字段中取第一个英文逗号前的ip地址
proxy_pass http://192.168.37.14; #代理后端服务器
proxy_http_version 1.1; #开启对http1.1支持
proxy_set_header Connection ""; #设置Connection为空串,以禁止传递头部到后端
#下面是nginx代理websocket需要特殊的配置
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
access_log /app/logs/www.example/access.log main;
error_log /app/logs/www.example/error.log;
}
文档更新时间: 2020-11-13 15:41 作者:子木