nginx反向代理配置(nginx.conf+proxy_set_header)

来源:互联网 发布:雷盾网络验证破解教程 编辑:程序博客网 时间:2024/05/19 11:16

公司最近有一些反向代理的需求,需要将nginx部署在互联网DMZ区。

之前只有利用nginx做过简单的web服务器,并未真正在生产环境上使用反向代理。

本公司生产环境目前配置如下:

[root@szweb01 conf]# cat nginx.conf
user  root;
worker_processes  4;
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  120;
    #gzip  on;

    server {
        listen       7013;
        server_name  www.ssssss.net;
        access_log  logs/soochow.host.access.log  main;
        location / {
        proxy_buffering off;
        proxy_pass      http://10.0.0.1:7023;
        proxy_redirect          off;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        REMOTE-HOST $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size    60m;
        proxy_read_timeout      600s;
        proxy_connect_timeout   30s;
        }

        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}


其中要着重说一下几个配置,研究了好几天:

1.error_log 

其实error_log分好几个级别,notice、info等,按照日志详细程度来区分的,要想看的全,直接全部打开。

2.proxy_set_header

这个参数估计很多人比较难理解,proxy_set_header是定义请求头,不懂的可以百度 http 请求头,参数意义基本都是一样的。

是nginx向后端被代理服务器转发http请求时,自定义增加的请求头,方便后台被代理服务器了解更多的http请求信息。

一般会有如下的配置。

proxy_set_header        Host $host;        #定义请求头中host的配置,一般为$host,必要时需要加端口(大多数为内网环境是需要加特定的端口,因为内网访问的时候,会采用ip+端口的访问形式)。而互联网访问时,用户习惯性的直接输入域名,域名默认就是80端口, $host表明客户端请求的主域名值,默认是80端口。
proxy_set_header        X-Real-IP $remote_addr;  #定义请求头中真实IP地址,方便后端被代理服务器获取真实的IP。
proxy_set_header        REMOTE-HOST $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

0 0