nginx 预研及应用 一、通过源码构建nginx 使用该 configure 命令配置构建。它定义了系统的各个方面,包括允许nginx用于连接处理的方法。最后它创建了一个 Makefile 。
configure 命令支持以下参数:
–help 
–prefix=path/usr/local/nginx 
–sbin-path=pathprefix/sbin/nginx 
–modules-path=pathprefix/modules 
–conf-path=pathnginx.conf 配置文件的名字,如果需要,nginx可以指定不同的配置文件启动,默认是 prefix/conf/nginx.conf 
–error-log-path=pathnginx.conf 配置文件中 error_log 指令可以指定错误日志路径。默认的文件是:prefix/logs/nginx.pid 
–pid-path=pathnginx.pid 文件的路径,该文件将用来存储主进程的进程id。默认prefix/logs/nginx.pid 
–lock-path=pathnginx.conf中直接通过 lock_file 改变lock文件指向的路径。默认 prefix/logs/nginx.pid 
–user=nameworker 进程所使用。安装之后,这个名字可以被 nginx.conf 配置文件中 user 所改变。 
–group=nameworker 进程所使用。安装之后,这个名字可以被 nginx.conf 配置文件中 user 所改变。默认情况下,组名被设置为未授权用户的名字。 
–build=name 
–builddir=path 
–with-select_module 
–without-select_moduleselect() 方法启动)有效或无效。如果nginx 运行没有出现合适的方法,诸如:kquene,epull,or /dev/poll。 
–with-poll_module 
–without-poll_modulepoll() 方法启动)有效或无效。如果nginx 运行没有出现合适的方法,诸如:kquene,epull。 
–with-threads 
–with-file-aioFreeBSD and Linux 的异步IO生效或失效。 
–with-http_ssl_moduleOpenSSL 库是必须的。 
–with-http_image_filter_module 
–with-http_image_filter_module=dynamicngx_-http_-image_-filter_module 。默认情况下不生成此模块。 
–with-http_geoip_module 
–with-http_geoip_module=dynamicngx_http_geoip_module 根据客户端ip地址来创建创建变量,并且重新编译MaxMind ,这个模块默认是不被创建的。 
–with-http_sub_modulengx_http_sub_module 模块,该模块可以将响应中指定的字符串被另一个替换,该模块默认是不被创建的。 
–with-http_dav_moduleWebDAV 协议实现文件自动管理,该模块默认是不被创建的。 
–with-http_flv_module 
–with-http_mp4_module 
–with-http_gunzip_module 
–with-http_gzip_static_module 
–with-http_auth_request_module 
–with-http_random_index_module 
–with-http_secure_link_module 
–with-http_degradation_modulengx_http_degradation_module 模块,该模块默认未被构建。 
–with-http_slice_module 
–with-http_stub_status_module 
–without-http_charset_modulengx_http_charset_module 失效,上述模块将指定字符集添加到“Content-Type”响应头当中,可以将响应的字符集转换成另一个字符集。 
–with-stream 
–with-stream=dynamic 
–with-stream_ssl_module 
–with-stream_geoip_module 
–with-stream_geoip_module=dynamic 
 
demo:
1 ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.43 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.1b 
编译实战:http://nginx.org/download/nginx-1.16.0.tar.gz http://www.zlib.net/ https://ftp.pcre.org/pub/pcre/ https://www.openssl.org/source/old/1.1.1/openssl-1.1.1b.tar.gz 
1 2 ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.42 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.1b make && make install 
附nginx目录:
一、使用者手册 该手册对nginx作简要介绍,并描述了nginx可以做的任务,使用该手册的前提是读者已在pc安装了nginx。如果没有,请查看安装nginx 页面。这个手册描述了如何启动和关闭nginx、如何重新加载配置、描述其配置文件的配置文件架构、描述设置静态服务器的配置、如何配置代理服务、如何用FastCGI application 来连接。master 集成和多个worker 进程。master 主要作用是读取和解析配置以及维持worker 进程。worker 进程是处理真实的请求进程。nginx 依赖事件驱动模型(event-based)和操作系统来高效地分发请求到worker 进程中。worker 进程地数量被定义在配置文件中,可以通过调整cpu核心的数量来修改(详见worker_processes)。nginx.conf ,被放置在/usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx 。
启动、关闭、重新加载配置 直接通过可执行文件启动nginx。一旦启动,就可以通过可执行文件传参 -s 的方式来控制nginx。使用语法如下:
nginx -s signal
 
signal,有如下参数:
stop - 快速关闭 
quit - 优雅关闭 
reload - 加载配置文件 
reopen - 重新打开日志文件worker 进程完成当前的请求,可以使用如下命令: 
 
nginx -s quit
 
配置文件的改变只能通过nginx重新加载配置或重启nginx生效。重新加载配置,执行如下:
nginx -s reload
 
一旦master 进程接收到了重新加载配置的信号,它会校验配置文件语法,并尝试去应用配置。如果配置成功,master 会创建新的worker 并通知旧的worker 进程去关闭。否则,master 进程会回滚当前的改变到历史配置,继续使用旧的配置。旧worker 进程接收到命令去关闭,会停止接收新的请求并将现有的请求处理完成后,才完成退出动作。
使用Unix 的工具kill 工具信号也可以发给nginx 进程。这种情况,带有进程id的信号直接发送给一个进程。这个进程id是被nginx master进程所重写,默认情况下 nginx.pid 在目录/usr/local/nginx/logs 或者 /var/run。例如,如果master 进程id 是1628,发送退出信号去优雅地关闭nginx,可执行:
kill -s QUIT 1628
 
为了获取nginx 进程id地列表,ps 工具被使用,例如:
ps -ax | grep nginx
 
更多信号发送到nginx,详看Controlling nginx
配置文件结构 nginx 包含很多模块,而这些模块是在配置文件中被特定地指令所控制。指令包括简单指令和指令块。一个简单地指令包含被空格分隔的名字和参数,以分号(;)结尾。指令块有和简单指令一样的结构,除了没有分号结尾以及额外的指令被花括号所包括({ and })。如果指令块在指令中有其他指令,则称之为上下文(例如 events, http, server, 和 location)。main 上下文中。events 和http 指令是在main 上下文中,server 指令在http 上下文中,location 在server 上下文中。剩下的一行# 注释。
静态资源服务 web 服务器最重要的一个任务就是发布一个文件服务(像图片或者静态html文件)。你能够实现将本地文件映射到网络url,可以直接通过请求访问文件。下面的示例是要实现/data/www (存放html静态资源) 和 /data/images (包含图片),这需要编辑配置文件,在http 指令块下 server 指令块下 添加两个location 指令块。。/data/www 目录,然后放一个html文件,然后再在/data/images 文件夹下放置些图片供测试。server 块的示例,将注释打开创建一个新的server 指令块。
通常这个配置文件会包含多个server 块,而这些server 是通过它们监听的端口和服务名称来加以区分。一旦nginx 确定哪一个server 处理请求,它会测试请求头中的参数和location 中配置的server 中定义是否匹配。location块到server 块当中。
1 2 3 location  / {    root  /data/www; } 
这个locaiton 块定义了“/”前缀和请求的URI做匹配。对于匹配的请求,这个URI将会被添加到root指令中重定向路径的后面,上述demo即是转向 /data/www ,以形成本地文件系统上所请求的路径。如果匹配多个location块,则nginx选择具有最长前缀的块。location上面提供长度为1的最短前缀,因此只有当所有其他location 块都无法提供匹配时,才会使用此块。
接下来添加第二个 location 块
1 2 3 location  /images/ {    root  /data; } 
它将会匹配以/images/ 开头的请求路径(location/ 也能匹配上,但是匹配前缀更短)。
而最终的server 块的配置如下:
1 2 3 4 5 6 7 8 9 server  {    location  / {         root  /data/www;     }     location  /images/ {         root  /data;     } } 
上述已经运行的配置监听80端口,可以铜鼓http://localhost/加以访问。为了响应url 以/images/ 开头的请求,nginx服务端将会发送/data/images 目录下的文件。例如为了响应http://localhost/images/example.png,nginx会发送/data/images/example.png文件。如果这个文件不存在,就会返回404错误。以/images/ 开头的URIs路径将会映射到/data/www目录下。为了响应请求http://localhost/some/example.html, nginx将会发送/data/www/some/example.html文件。为了使新的配置生效,需要发送reload信号到nginx 的master进程。通过执行:
如果加载出现了问题,你可以在access.log和error.log中查找问题。文件路径/usr/local/nginx/logs  或 /var/log/nginx。
设置一个简单的代理服务 代理服务是nginx最常使用的一个功能,就是意味着nginx作为一个服务器接收请求,让他们去访问被代理的服务器,从被代理的服务器检索响应,并将他们转发到客户端。server块来定义被代理的服务。
1 2 3 4 5 6 7 server  {    listen  8080 ;     root  /data/up1;     location  / {     } } 
上述配置监听8080端口,并且映射所有请求到/data/up1目录。创建这个目录,并把index.html文件放进去。注意root 指令需要放置到location块中。这个root生效要求location块被选择,并且location块中没有root指令。
接下来使用来自现在的配置,修改它作为一个代理服务器。在第一个location块,配置proxy_pass指令,参数配置协议、名称、端口以及被代理的服务。
1 2 3 4 5 6 7 8 9 server  {    location  / {         proxy_pass  http://localhost:8080;     }     location  /images/ {         root  /data;     } } 
我们将修改第二个location块,它将会映射请求以/images/开头的请求到本地磁盘/data/images 目录下,为了使之匹配图片资源,可配置如下:
1 2 3 location  ~ \.(gif|jpg|png)$  {    root  /data/images; } 
这个参数正则匹配所有以.gif、.jpg或者 .png结尾的URIs。一个正则表达式应该以~开头,该请求将会被映射到目录/data/images下。location块来服务一个请求,首先它会校验location指令指定的前缀,记住location指令匹配最长路径,然后校验正则。如果匹配到了正则,nginx将会挑选该location块,否则会选择之前记下来的模块。
1 2 3 4 5 6 7 8 9 server  {    location  / {         proxy_pass  http://localhost:8080/;     }     location  ~ \.(gif|jpg|png)$  {         root  /data/images;     } } 
启动FastCGI代理FastCGI服务器,FastCGI服务器可以运行多种框架和编程语言,比如PHP。fastcgi_pass取代proxy_pass,改变参数到9000。在php中,SCRIPT_FILENAME被使用决定脚本名称,QUERY_STRING设置请求参数,结果配置如下:
1 2 3 4 5 6 7 8 9 10 11 server  {    location  / {         fastcgi_pass   localhost:9000 ;         fastcgi_param  SCRIPT_FILENAME $document_root $fastcgi_script_name ;         fastcgi_param  QUERY_STRING    $query_string ;     }     location  ~ \.(gif|jpg|png)$  {         root  /data/images;     } } 
代理缓存 完整示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 worker_processes   2 ;events  {    worker_connections   1024 ; } http  {    include        mime.types;     default_type   application/octet-stream;                              proxy_cache_path  /data/nginx/cache levels=1 :2   keys_zone=cache:10m  inactive=24h   max_size=1g  use_temp_path=off ;     sendfile         on ;               keepalive_timeout   65 ;          server  {         listen        80 ;         server_name   localhost;                           location  / {             root    html;             index   index.html index.htm;         }         location  /www {            alias  /data/;         }         location  /images/ {            root  /data;         }         location  ~ ^/nginxdemo  {            proxy_pass  http://nginxdemoserver;            proxy_cache  cache;             proxy_cache_valid  200  304  12h ;             proxy_cache_valid  any 10m ;            add_header  Nginx_Cache "$upstream_cache_status " ;            proxy_cache_use_stale   error  timeout invalid_header updating http_500 http_502 http_503 http_504;         }                           error_page    500  502  503  504   /50x.html;         location  = /50x.html {             root    html;         }     }     upstream  nginxdemoserver {         least_conn;         server  10.211.55.4:8080  weight=1 ;         server  10.211.55.4:8082  weight=1 ;     } } 
websocket代理 为了将基于HTTP/1.1协议的客户端和服务端连接转换成websocket,请使用HTTP/1.1协议所提供的协议转换机制。
然而,有一个微妙之处:由于“Upgrade”是 hop-by-hop  请求头,因此它不会从客户端传递到代理服务器。通过转发代理,客户端可以使用该CONNECT 方法来规避此问题。但是,这不适用于反向代理,因为客户端不知道任何代理服务器,并且需要在代理服务器上进行特殊处理。
从版本1.3.13开始,nginx实现了特殊的操作模式,如果代理服务器返回带有代码101(交换协议)的响应,则允许在客户端和代理服务器之间建立通道,并且客户端要求通过请求中的“Upgrade”请求头。
如上所述,包括“Upgrade” 和 “Connection”的hop-by-hop不会从客户端传递到代理服务器,因此为了让代理服务器知道客户端将协议切换到WebSocket的意图,这些报头必须明确传递:
1 2 3 4 5 6 location  /chat/ {    proxy_pass  http://backend;     proxy_http_version  1 .1 ;     proxy_set_header  Upgrade $http_upgrade ;     proxy_set_header  Connection "upgrade" ; } 
一个更为复杂的配置,取决于“Connection”请求头的值取决于客户端请求是否有“Upgrade”请求头,下demo中如果$http_upgrade是default,则$connection_upgrade设置为upgrade。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 http  {    map  $http_upgrade  $connection_upgrade  {         default  upgrade;         ''      close;     }     server  {         location  /chat/ {             proxy_pass  http://backend;             proxy_http_version  1 .1 ;             proxy_set_header  Upgrade $http_upgrade ;             proxy_set_header  Connection $connection_upgrade ;         }     } 
默认情况下,如果代理服务器在60秒内未传输任何数据,则将关闭连接。
demo:
1 2 3 4 5 6 7 8 9 10 11 location  ~ ^/websocket/gs-guide-websocket/  {			proxy_pass  http://websocketsserver; 			proxy_http_version  1 .1 ; 			proxy_set_header  Upgrade $http_upgrade ; 			 			proxy_set_header  Connection "Upgrade" ; 			proxy_set_header  Origin '' ; 			proxy_set_header  Remote_addr $remote_addr ; 			proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ; 			proxy_read_timeout  600s ; 		} 
nginx 动态添加模块,平滑升级: 例如上述配置不支持缓存代理:通过平滑升级实现缓存代理:core 模块中,只需要重新编译
1 2 nginx  -Vconfigure arguments: --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8 .42  --with-zlib=../zlib-1 .2 .11  --with-openssl=../openssl-1 .1 .1b 
再编译:
1 2 3 4 5 6 7 8 9 10 $ ./configure \     --prefix=/usr/local/nginx \     --with-zlib=../zlib-1.2.11 \     --with-pcre=../pcre-8.42 \     --with-http_ssl_module \     --with-openssl=../openssl-1.1.1b \     --http-client-body-temp-path=/var/cache/nginx/client_temp  \     --http-proxy-temp-path=/var/cache/nginx/proxy_temp      $ make  //注意,不要make install 
替换nginx二进制文件
1 2 $  cp /usr/local /nginx/nginx /usr/local /nginx/nginx.bak $  cp ./objs/nginx /usr/local /nginx/nginx 
再次确认是否成功安装
1 $ /usr/local/nginx/nginx -V 
至此nginx重新编译添加模块成功。
代理缓存 完整示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 worker_processes   2 ;events  {    worker_connections   1024 ; } http  {    include        mime.types;     default_type   application/octet-stream;                              proxy_cache_path  /data/nginx/cache levels=1 :2   keys_zone=cache:10m  inactive=24h   max_size=1g  use_temp_path=off ;     sendfile         on ;               keepalive_timeout   65 ;          server  {         listen        80 ;         server_name   localhost;                           location  / {             root    html;             index   index.html index.htm;         }         location  /www {            alias  /data/;         }         location  /images/ {            root  /data;         }         location  ~ ^/nginxdemo  {            proxy_pass  http://nginxdemoserver;            proxy_cache  cache;             proxy_cache_valid  200  304  12h ;             proxy_cache_valid  any 10m ;            add_header  Nginx_Cache "$upstream_cache_status " ;            proxy_cache_use_stale   error  timeout invalid_header updating http_500 http_502 http_503 http_504;         }                           error_page    500  502  503  504   /50x.html;         location  = /50x.html {             root    html;         }     }     upstream  nginxdemoserver {         least_conn;         server  10.211.55.4:8080  weight=1 ;         server  10.211.55.4:8082  weight=1 ;     } } 
附成都现场nginx配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 worker_processes   2 ;events  {    worker_connections   1024 ; } http  {    include        mime.types;     default_type   application/octet-stream; 		 		client_max_body_size  100m ;                         sendfile         on ;               keepalive_timeout   65 ; 	 	server  { 		listen  8091 ; 		server_name  localhost 10.1.233.73 ; 		 		access_log   logs/host.access.log ; 		location  ~ ^/dgpCD-server-web  { 			proxy_pass  http://10.1.233.73:8081; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 	} 	 	server{ 		listen  8080  ssl; 		server_name  localhost 10.1.233.73 ;  		ssl_certificate  ssl/2220425__cdmpnr.cn.pem; 		ssl_certificate_key  ssl/2220425__cdmpnr.cn.key; 		ssl_session_tickets  on ; 		charset  utf-8 ; 		location  ~ ^/dasc-sso/(.*)$  { 			proxy_pass  http://cas_server/dasc-sso/$1 $is_args $args ; 			proxy_redirect  http:// https://; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;               proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  ~ ^/dgpCD-server-web  { 			rewrite   ^/(dgpCD-server-web)$  $scheme ://$host :$server_port /$1 /  permanent ; 			proxy_pass  http://dgpcd_server; 			proxy_redirect  http:// https://; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ; 			proxy_set_header  X-Forwarded-Scheme https;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  ~ ^/websocket/gs-guide-websocket/  { 			proxy_pass  http://websocketsserver; 			proxy_http_version  1 .1 ; 			proxy_set_header  Upgrade $http_upgrade ; 			 			proxy_set_header  Connection "Upgrade" ; 			proxy_set_header  Origin '' ; 			proxy_set_header  Remote_addr $remote_addr ; 			proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ; 			proxy_read_timeout  600s ; 		} 		 		location  /websocket { 			rewrite   ^/(.*)(websocket)$  $scheme ://$host :$server_port /$2 /  permanent ; 			proxy_redirect  http:// https://; 			proxy_pass  http://websocketsserver; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ; 			proxy_set_header  X-Forwarded-Scheme https;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 			proxy_set_header  Upgrade-Insecure-Requests 1 ; 		} 		 		location  ~ ^/dgm-server-web  { 			proxy_pass  http://dgmcd_server; 			proxy_redirect  http:// https://; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  ~ ^/cdoms  { 			 			 			 			rewrite   ^/(.*)(cdoms)$  $scheme ://$host :$server_port /$2 /  permanent ; 			proxy_pass  http://cdoms_server; 			proxy_redirect  http:// https://; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		 		location  ~ ^/MasterEvalutionBase  { 			 			 			 			proxy_pass  http://master; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  ~ ^/web_static  { 			proxy_pass  http://web_static; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  /api { 			proxy_pass  http://calcuApi; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		 		 		location  /dghycdzg { 			proxy_pass  http://dghycdzg; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  /dghycdzb { 			proxy_pass  http://dghycdzb; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  /Proxy.ashx { 			 			proxy_pass   http://Proxy; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  /dascService { 			proxy_pass   http://dascService; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  /dasc { 			rewrite   ^/(dasc)$  $scheme ://$host :$server_port /$1 /  permanent ; 			proxy_pass   http://dasc; 			proxy_set_header  Host $host :$server_port ;             proxy_set_header  X-Real-IP $remote_addr ;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for ;             proxy_set_header  X-FORWARDED-HOST $server_addr ;             proxy_set_header  X-FORWARDED-PORT $server_port ; 		} 		 		location  /CDMD { 			index  index.html; 			try_files  $uri  $uri / /index.html; 			root  E:/Software/nginx-1 .16 .0 /statics; 		} 		 		location  /CDZG { 			index  index.html; 			try_files  $uri  $uri / /index.html; 			root  E:/Software/nginx-1 .16 .0 /statics; 		} 		 		location  /UPRSMS { 			index  index.html; 			try_files  $uri  $uri / /index.html; 			root  E:/Software/nginx-1 .16 .0 /statics; 		} 		 		location  /dgp_js_api319 { 			index  index.html; 			try_files  $uri  $uri / /index.html; 			root  E:/Software/nginx-1 .16 .0 /statics; 		} 	} 	 	upstream  websocketsserver { 		ip_hash;		 		server  10.1.233.73:8081  weight=1 ; 		server  10.1.233.73:8079  weight=1 ; 	} 	 	 	upstream  load_balance_server{ 		ip_hash; 		server  10.1.233.73:8081  weight=1   fail_timeout=20s ; 		server  10.1.233.73:8081  weight=1   fail_timeout=20s ; 	} 	 	upstream  dgpcd_server { 		 		 		server  10.1.233.73:8079  weight=1 ; 		server  10.1.233.73:8081  weight=1 ; 	} 	 	upstream  dgmcd_server { 		ip_hash; 		server  10.1.233.73:8079  weight=1 ; 		server  10.1.233.73:8081  weight=1 ; 	} 	 	upstream  cas_server { 		server  10.1.233.75:8090  weight=1 ; 	} 	 	upstream  cdoms_server { 		server  10.1.233.75:8080  weight=1 ; 	} 	 	upstream  master { 		ip_hash; 		server  10.1.233.73:8079  weight=1 ; 		server  10.1.233.73:8081  weight=1 ; 	} 	 	upstream  UPRSMS { 		ip_hash; 		server  10.1.233.73:8079  weight=1 ; 		server  10.1.233.73:8081  weight=1 ; 	} 	 	upstream  front_resource { 		server  10.1.233.73:8081  weight=1 ; 	} 	 	upstream  web_static { 		server  10.99.34.8:80  weight=1 ; 	} 	 	upstream  calcuApi { 		server  10.1.233.77:8888  weight=1 ; 	} 	 	upstream  dghycdzg { 		server  10.1.233.77:81  weight=1 ; 	} 	 	upstream  dghycdzb { 		server  10.1.233.77:81  weight=1 ; 	} 	 	upstream  Proxy { 		server  10.1.233.73:83  weight=1 ; 	} 	upstream  dascService { 		server  10.1.233.75:8090  weight=1 ; 	} 	 	upstream  dasc { 		server  172.25.16.8:8090  weight=1 ; 	} }