通过一个例子演示一下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. overture里设置踏板标记

    在学习如何设置踏板标记之前,我们先来了解什么是踏板标记.踏板标记一般是使用在乐谱上,众所周知,钢琴有三个踏板,每个踏板的作用都不一样:右边的踏板称为“延音踏板”,是用来延长琴弦振动的时间,使音延长的效 ...

  2. VC++ 使用CreateProcess创建新进程

    https://www.cnblogs.com/fancing/p/6477918.html #include <windows.h> #include <tchar.h> # ...

  3. 使用JBarcode生成一维码

    需要的jar包,只有jbarcode.jar 链接: https://pan.baidu.com/s/1o9oDPB8 密码: x367 public class Main { //设置条形码高度 p ...

  4. Android灯光系统--通知灯深入分析【转】

    本文转自:https://www.cnblogs.com/lkq1220/p/6406261.html Android灯光系统--通知灯深入分析 通知的类别 声音 振动 闪灯 APP如何发出通知灯请求 ...

  5. [Sdoi2017]序列计数 矩阵优化dp

    题目 https://www.lydsy.com/JudgeOnline/problem.php?id=4818 思路 先考虑没有质数限制 dp是在同余系下的,所以\(f[i][j]\)表示前i个点, ...

  6. 这几道Java集合框架面试题几乎必问

    Arraylist 与 LinkedList 异同 补充:数据结构基础之双向链表 ArrayList 与 Vector 区别 HashMap的底层实现 JDK1.8之前 JDK1.8之后 HashMa ...

  7. Java日期时间(Date/Time)

    获取当前日期和时间 在Java中容易得到当前的日期和时间.可以使用一个简单的Date对象的toString()方法,如下所示打印当前日期和时间: import java.util.Date; publ ...

  8. Codeforces Round #535 (Div. 3) 解题报告

    CF1108A. Two distinct points 做法:模拟 如果两者左端点重合就第二条的左端点++就好,然后输出左端点 #include <bits/stdc++.h> usin ...

  9. Derek解读Bytom源码-P2P网络 地址簿

    作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom ...

  10. Latex 算法过长 分页显示方法

    参考: Algorithm tag and page break Latex 算法过长 分页显示方法 1.引用algorithm包: 2.在\begin{document}前加上以下Latex代码: ...