nginx反向代理配置与优化之nginx优化

环境为:Windows2003 + nginx.(根据官方文档建议,使用1.5.10版本,即当前最新版).

一.简单的配置,让nginx先跑起来

nginx配置比较简单.conf目录下找到nginx.conf文件,修改如下配置

 代码如下 复制代码

server {
        listen       80; //绑定的监听端口
        server_name  www.111cn.net 111cn.net; //绑定的域名
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   html;
            proxy_pass http://192.168.0.23:81/; //位于内网的http server
            proxy_redirect off;
            proxy_set_header Host      $proxy_host;//后端服务器的主机名和端口
            proxy_set_header  X-Real-IP  $remote_addr; //反向代理IP,其中X-Real-IP为自定义请求头
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            index  index.aspx default.aspx index.html index.htm;//默认文档
        }

注意proxy_set_header Host $proxy_host;这个配置,官方文档为proxy_set_header Host $host; 但是经过试验,并不能成功启用反向代理,文档中的内嵌变量也没有$host,不知文档有错误,还是我的理解错误.
将cmd切换至nginx目录,运行start nginx,运行nginx,进程中就多了2个nginx.exe进程.运行nginx -s stop关闭nginx,运行nginx -s reload重启nginx.注意:关闭或重启命令有时候不能关闭nginx,如果修改配置无效,要检查下nginx是否真正退出.

2.通过反向代理后的请求头变化

我们来看下启用反向代理后,请求头多了些什么.上一段php取请求头的代码

 

 代码如下 复制代码
<?php
$headers = array(); 
foreach ($_SERVER as $key => $value) { 
    echo $key."=".$value;
    echo "<br />";
    if ('HTTP_' == substr($key, 0, 5)) { 
        $headers[str_replace('_', '-', substr($key, 5))] = $value; 
    } 
}
?>

通过反向代理访问这段脚本后,得到如下结果:

 代码如下 复制代码
USER=www
HOME=/home/www
FCGI_ROLE=RESPONDER
GATEWAY_INTERFACE=CGI/1.1
SERVER_SOFTWARE=nginx/1.2.9
QUERY_STRING=
REQUEST_METHOD=GET
CONTENT_TYPE=
CONTENT_LENGTH=
SCRIPT_NAME=/tools/test.php
REQUEST_URI=/tools/test.php
DOCUMENT_URI=/tools/test.php
DOCUMENT_ROOT=/web
SERVER_PROTOCOL=HTTP/1.1
REMOTE_ADDR=123.170.241.72
REMOTE_PORT=11827
SERVER_ADDR=103.251.91.175
SERVER_PORT=80
SERVER_NAME=www.111cn.net
REDIRECT_STATUS=200
SCRIPT_FILENAME=/web/tools/test.php
HTTP_HOST=111cn.net
HTTP_CONNECTION=keep-alive
HTTP_CACHE_CONTROL=max-age=0
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
HTTP_ACCEPT_ENCODING=gzip,deflate,sdch
HTTP_ACCEPT_LANGUAGE=zh-CN,zh;q=0.8
HTTP_COOKIE=wp-settings-1=imgsize%3Dfull%26editor%3Dtinymce%26hidetb%3D1%26ngg_show_update_notice196%3D1%26libraryContent%3Dbrowse%26align%3Dnone%26urlbutton%3Dpost%26mfold%3Do; wp-settings-time-1=1386907183; bdshare_firstime=1393228286385; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_c9c95ee17ba7f5ef416fc56a8a98a5ff=NINE%7C1393388079%7Cce226d537feb3af00ea52d0cf8d71600
PHP_SELF=/tools/test.php
REQUEST_TIME=1393261963

3.后端网站代码修改

如果后端网站需要取访问者IP,通过取请求中的”REMOTE_ADDR”属性取到的是反向代理的ip,此时我们通过反向代理转发请求时添加的请求头来获取访问者的真实IP.目前我的后端网站为.net.

 代码如下 复制代码

public string getRequstAddr (HttpContext context){
    string ip;
    if (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
    {
        string str = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        string[] iparray = str.Split(',');
        ip = iparray[0];
    }
    else{
        ip = context.Request.ServerVariables["REMOTE_ADDR"].ToString();
    }
    return ip;
}

时间: 2024-12-26 23:43:21

nginx反向代理配置与优化之nginx优化的相关文章

【整理】自动的 Nginx 反向代理配置

本文内容参考自< 自动的 Nginx 反向代理配置 >.  个人觉得:名字翻译成<自动化 Nginx 反向代理配置>更为贴切.  [一句话总结] 介绍了如何构建一个能够自动化配置 nginx 反向代理的方式.即将后端服务的部署与前端 nginx 的配置更改进行解耦.  [知识点]  对于 API 的使用者来说所有操作都是在同一个 URL 空间里进行的,而实际上是根据 URL 中不同的顶级"段"来进行路由的. 自动化配置的流程:当增加处理新"段"

nginx反向代理配置两个实例

例1 目前就稳定性来说,Apache是没得比的.因此,用nginx做反向代理比较合适. 这里是给http://172.30.170.8:8088/vod/做代理,反向代理服务器的名称为vod.xx.xxx.cn ,监听80端口. Apache httpd服务器监听8088端口(我这里apache与反向代理服务器在同一服务器). 全局配置参数做些调整:  代码如下 复制代码 hacklog@hywd:/etc/nginx$ cat nginx.conf user www-data; worker_

nginx反向代理配置及优化

前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反向代理apache.整个配置安装过程很简单.在考虑高并发的情况下,在安装前就做了些优化.目前配置能抗住3000以上并发.好像不是特别大哦?呵~~ 但足以~~ 只是还有少量499问题. 第1部分:安装 1 建立用户及组 /usr/sbin/groupadd www /usr/sbin/useradd -g www www 2 安

基于CentOS 7配置Nginx反向代理

Nginx作为反向代理服务器被广泛使用在各大互联网企业.它简单易用,可以根据业务的需求将其不同的业务类型代理至不同的服务器,将整个站点请求压力按类型分摊到不同的服务器.该方式使的整个站点请求性能得以极大的提升.本文简要描述了Nginx几种不同情形的代理演示,供大家参考. 一.反向代理及演示环境描述 1.反向代理 在计算机网络中,反向代理是一种代理服务器,代表客户端从一个或多个服务器检索资源.然后将这些资源返回给客户机,就像它们源自Web服务器本身一样.与正向代理相反,正向代理是与其关联的客户端联

tomcat集群-nginx 反向代理三个本地tomcat 负载均衡配置 无法加载js css 图片等 也不报错

问题描述 nginx 反向代理三个本地tomcat 负载均衡配置 无法加载js css 图片等 也不报错 打开速度非常慢,到最后js css无法加载是什么问题 我的项目是ssh+jquery+easyui的 单独访问tomcat完全正常 访问nginx就这样了 .求大神指点啊 访问webapp根目录是可以的 我的页面都是在web-inf目录下的貌似不行 nginx配置如下: #user nobody; worker_processes 1; #error_log logs/error.log;

Nginx服务器的SSL证书配置以及对SSL的反向代理配置_nginx

Nginx的SSL证书配置 1.使用openssl实现证书中心由于是使用openssl架设私有证书中心,因此要保证以下字段在证书中心的证书.服务端证书.客户端证书中都相同 Country Name State or Province Name Locality Name Organization Name Organizational Unit Name Country Name State or Province Name Locality Name Organization Name Org

配置nginx反向代理jira并实现https

配置nginx反向代理jira并实现https 配置Tomcat 在本文中,我们设置可以在地址http://jira.aniu.so/jira(标准HTTP端口80)上访问JIRA,而JIRA本身可以使用上下文路径/ jira监听端口8080. 修改配置文件server.xml(在jira安装目录下) 更改前: <Context docBase="${catalina.home}/atlassian-jira" path="" reloadable="

Nginx 反向代理的简单配置

下面就来分享一下.此方法适用于军哥的LNMP一键包.AMH主机面板(当然AMH自带了反代模块)下面就开始. 下面是一段非常简单的反向代理配置: server         {         listen          80;         server_name     111cn.net  www.111cn.net ;         location / {            proxy_pass http://www.baidu.com;            proxy_

Nginx反向代理websocket配置实例_nginx

最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 复制代码 代码如下: 注: 看官方文档说 Nginx 在 1.3 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必须升级到 1.3 以后的版本,因此我这边是下载的 Tengine 的最新版本测试的 1.下载 tengine 最近的源码 复制代码 代码如下: wget http://tengine.taobao.org/dow