虚拟服务器

通过实例来讲解:

[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   作者:子木