nginx 反向代理说明
1 在大型项目开发中,可能会有多个应用部署在不同机器上,如果想让用户访问单个域名或IP访问到这些应用,可以使用 nginx 的反向代理,将应用的地址通过 nginx 代理,用户通过访问 nginx 地址即可访问到所有应用。
也可以在 nginx 机器上做权限控制。
由于自己资源有限,下面例子是在一台机器上部署多个应用,每个应用占用不同端口,通过 nginx 反向代理,将应用的不同端口代理到主机的 80 端口。nginx 配置如下
user nginx;
worker_processes ; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; #使用 epoll 模型提高并发效率
events {
use epoll;
worker_connections ;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format access '$HTTP_X_REAL_IP - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout ; gzip on; client_max_body_size 50m; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户
client_body_buffer_size 10m;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 300s;
proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘
proxy_ignore_client_abort on; #不允许代理端主动关闭连接 # 如果有多个服务器主机,可以有多个 server 模块, server {
listen ; # 监听的主机端口,
server_name 140.187.167.220;#就是内部服务器的 IP 地址,或者域名
# 每个 location 代表代理一个位置,比如下面的表示:当用户访问 ${server_name}:${listen}/${location} 即 140.187.167.220:80/portal 时,实际是访问内部服务器 ${proxy_pass} 即 140.187.167.220:8082/portal
# 一个 server 模块下有多个 location 表示,代理该服务器的多个位置
# 如果有多个 server 模块,表示多个物理主机,即 ip 不同
location /portal {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://140.187.167.220:8082/portal;
proxy_set_header Cookie $http_cookie;
} location /admin {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://140.187.167.220:8080/admin;
proxy_set_header Cookie $http_cookie;
} # 使用 nginx 做一个代理本地图片文件夹。 location ^~/images/upload/.*.(gif|jpg|jpeg|png|bmp|tiff|svg|pcd)$ {
expires 30d;
} access_log /var/log/nginx/proxy.log;
} }
对于 location 的说明可以参看之前的博文 nginx配置文件中location说明
如果有多个应用在不同主机上,应该有多个 server 块,servername 就是 server 的 IP 地址
如果想代理一个主机上的多个位置,需要在一个 server 块下有多个 location 块。
nginx 反向代理说明的更多相关文章
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...
- Nginx反向代理部署指南
一.反向代理 我们都知道,80端口是web服务的默认端口,其他主机访问web服务器也是默认和80端口进行web交互,而一台服务器也只有一个80端口,这是约定俗成的标准. 我们来看下面两个场景: 1.服 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- Nginx反向代理和负载均衡
一.Nginx反向代理设置 从80端口转向其他端口反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的 ...
- nginx 反向代理
nginx 反向代理 vim nginx.conf http { ..... upstream "tomcatweb" { server 172.30.13.199:8080; s ...
- 关于nginx反向代理后获取不到客户端的真实ip地址问题
前段时间在我的网站上用nginx做了一下反向代理,最近发现不能获取客户端ip了,都是拿到的127.0.0.1的本地ip... 通过查资料后,再去看了看我的配置文件,结果发现我没有如下配置: nginx ...
- Nginx反向代理配置可跨域
由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...
- Nginx反向代理搭建配置
1.反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给internet 上请求连接的客户端,此时代理服务器对外就表现为一个 ...
- nginx反向代理docker registry报”blob upload unknown"解决办法
问题症状:keepalived+nginx反向代理后端docker registry群集时,使用docker客户机向registry push镜像时出现 "blob upload unkno ...
随机推荐
- React (native) 相关知识
container component provider组件 react里的redux进阶玩法 react组件的生命周期 conductor / componentWillMount / render ...
- hdu 1016 Prime Ring Problem (dfs)
一切见凝视. #include <cstdio> #include <iostream> #include <cstring> #include <algor ...
- Table折叠小技巧html-demo
1.要做一个table折叠的展示文本框直接上代码 html: <!DOCTYPE html> <html> <head> <title>table-折叠 ...
- [转]什么是 RPC?
知乎上看到的一个解释,解释的太精炼太直接,忍不住在这记录一下. 知乎地址:https://www.zhihu.com/question/25536695 本地过程调用 RPC就是要像调用本地的函数一样 ...
- [nQSError: 37001]Could not connect to the Oracle BI Server Instance
[nQSError: 37001]Could not connect to the Oracle BI Server Instance 使用本机的OBIEE Client 的Oracle BI管理工具 ...
- java 判断String字符串是不是json数据
java 判断String字符串是不是json数据 CreationTime--2018年8月24日18点23分 Author:Marydon JSONObject jo = null; try ...
- Dubbo框架探讨(转)
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...
- linux-env命令解析
Linux的env命令查看当前用户的环境信息 [root@linux ~]# envHOSTNAME=linux.dmtsai.tw <== 这部主机的主机名称SHELL=/bin/bash ...
- 【LeetCode】213. House Robber II
House Robber II Note: This is an extension of House Robber. After robbing those houses on that stree ...
- HDU 4648 Magic Pen 6 (。。。。。。。。。。)
Magic Pen 6 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...