通过一个例子演示一下nginx是如何代理服务的,并且讲一下nginx.conf的关于server模块location模块的配置

server模块:配置虚拟主机的相关参数,一个http中可以有多个server

location模块:配置请求的路由,以及各种页面的处理情况

首先我在本地虚拟机安装了nginx和tomcat,启动后,此时可以使用虚拟机ip地址访问tomcat

虚拟机ip是:http://192.168.233.128

tomcat监听的端口是:8080

1.现在想通过nginx代理一下tomcat服务,使用nginx配置的虚拟主机地址来访问

(1)增加一个server 块,并在其中添加一个location快,如下

server {
listen ;
server_name localhost; location / { # 只有一个/后面没有路径,表示访问tomcat首页
proxy_pass http://localhost:8080;
# tomcat服务的路由 (因为我的nginx和tomcat部署在了同一台虚拟机,所以这里填的localhost,假如想代理其他服务器的服务,则填写程序所在服务器ip端口即可)
}
}

这样,在访问时,使用虚拟主机的ip+端口即可访问  http://192.168.233.128:8089/

(2)在原有server基础上添加一个location块,如下:

    server {
listen ;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; # location / { #注意:把原来的根路径的location注释掉了,这个页面是跳转到nginx的首页,因为不允许出现2个一样的location路径,否则会报错“nginx: [emerg] duplicate location "/" in /usr/local/nginx/conf/nginx.conf:63”
# root html;
# index index.html index.htm;
#} location / { # 根路径
proxy_pass http://localhost:8080; # 请求转向本虚拟机的8080端口(即访问tomcat)
 }

这次,直接使用虚拟机的ip即可访问tomcat首页:http://192.168.233.128(不需要加端口,因为是80端口)

2.在tomcat上部署了一个jenkins.war,通过nginx反向代理来访问

正常访问jenkins是:http://192.168.233.128:8080/jenkins

通过nginx代理,不加端口访问,只需在监听80端口的server块中添加一个location块

location /jenkins {                # /jenkins表示要访问的路由下的路径
proxy_pass http://127.0.0.1:8080; # 请求转向本虚拟机的8080端口 proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #获取真实ip
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
proxy_redirect off;
}

配置完成后重启nginx,使用http://192.168.233.128/jenkins进行访问即可

3.代理部署在另一台服务器的程序,通过nginx所在服务器访问其服务

在监听80端口的server块中添加一个location块

location /ApprPhD {                # 访问程序时需要在ip后添加的路径
proxy_pass http://192.168.0.XXX:30; # 请求转向XXX服务器上的服务,结合/ApprPhd,表示访问 http://192.168.0.XXX:30/ApprPhD
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #获取真实ip
proxy_set_header REMOTE-HOST $remote_addr;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
proxy_redirect off;
}

重启nginx服务后,使用如下链接访问:http://192.168.233.128/ApprPhD

nginx反向代理实例的更多相关文章

  1. linux之反向代理,反向代理实例,负载均衡实例

    目录 nginx反向代理 1. 概述 2. 反向代理服务器的工作原理 (1)作为内容服务器的替身 (2)作为内容服务器的负载均衡器 二. nginx反向代理实例 1.前期准备 2.代理服务器配置 3. ...

  2. 实战 | 一文带你读懂Nginx反向代理

    一个执着于技术的公众号 前言 在前面的章节中,我们已经学习了nginx基础知识: 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文 ...

  3. Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中

    场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detai ...

  4. Nginx反向代理配置配置实例

    为了节省支出,公司需要将分布在不同机器的站点都迁移到一台机器,而目前不同机器运行的是不同的web服务,部分是nginx,部分是apache,由于牵涉较多rewrite规则,为了节省修改功夫,打算迁移后 ...

  5. Nginx反向代理websocket配置实例

    最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 复制代码 代码如下: 注: 看官方文档说 Nginx 在 1.3 以后的版 ...

  6. nginx反向代理配置实例分享

    nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...

  7. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  8. nginx反向代理tomcat访问时浏览器加载失败,出现 ERR_CONTENT_LENGTH_MISMATCH 问题

    问题说明:测试机上部署了一套业务环境,nginx反向代理tomcat,在访问时长时间处于加载中,十分缓慢! 通过浏览器调试(F12键->Console),发现有错误ERR_CONTENT_LEN ...

  9. nginx 反向代理 与 Apache backend的配置联合配置

    nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1.  设置域名, 子域名映射到指定服务器ip ...

随机推荐

  1. PHP 重置数组为连续数字索引的几种方式

    原文链接:https://blog.csdn.net/zhang197093/article/details/78606916 推荐的方式  array_values 方法 这样方式无论对普通数组还是 ...

  2. 给自己的程序添加BugReport

    转载:https://www.easyicon.net/(免费icon) 转载:https://www.codeproject.com/Articles/5260/XCrashReport-Excep ...

  3. 指针delete之后赋值为null

    1.现象 经常看到有些代码在delete之后赋值为null 2.原因 C++标准规定:delete空指针是合法的,没有副作用. 所以我们在Delete指针后赋值为NULL或0是个好习惯.对一个非空指针 ...

  4. python --- 14 递归 二分法查找

    一.递归 1.函数自己调用自己 2.官方说明最大深度1000,但跑不到1000,要看解释器, 实测998 3.使⽤递归来遍历各种树形结构 二.    二分法查找 掐头结尾取中间 ,  必须是有序序列 ...

  5. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(2)

    2.连接相关 名称 类型 说明 Connection 指向一个数据库连接对象 Disconnected 设置为True将在数据库关闭后继续保持数据集的开启状态. 3. 数据获取 名称 类型 说明 Fe ...

  6. [转] Java 基础

    1. 面向对象和面向过程的区别 面向过程 面向对象 2. Java 语言有哪些特点 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 JVM JDK 和 JRE 4. Oracle JDK 和 ...

  7. oracle 之 伪列 rownum 和 rowid的用法与区别

    rownum的用法 select  rownum,empno,ename,job from emp where rownum<6 可以得到小于6的值数据 select rownum,empno, ...

  8. POJ3580 SuperMemo

    Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is told to pl ...

  9. 题解——Codeforces Round #508 (Div. 2) T3 (贪心)

    贪心的选取最优解 然后相减好 记得要开long long #include <cstdio> #include <algorithm> #include <cstring ...

  10. iframe初始化属性

    <iframe id="user" src="xxx.html" frameborder="0" width="" ...