nginx反向代理配置及指向本地路径

标签: nginx
36人阅读 评论(0) 收藏 举报
分类:

nginx作为web服务器一个重要的功能就是反向代理。

nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。配置前的准备工作,后端跑apache服务的ip和端口,也就是说可以通过http://ip:port能访问到你的网站。

参考:http://www.ttlsa.com/nginx/use-nginx-proxy/

https://www.cnblogs.com/xiaoruilin/p/7782214.html

https://www.cnblogs.com/yanyuji/p/6688979.html(主要参考注释)

https://blog.csdn.net/chen_________/article/details/68489433

https://www.cnblogs.com/Miss-mickey/p/6734831.html(重点参考,还有更详细的注释)

 

一、nginx反向代理设置

目标:在浏览器中输入xxx123.tk能访问到内网机器192.168.10.38的3000端口,输入xxx456.tk能访问到内网机器192.168.10.40的80端口

1.修改配置文件

vim nginx.conf

user www www;# 运行用户

worker_processes 1;#启动进程,通常设置成和cpu的数量相等

error_log logs/error.log;# 全局错误日志及PID文件

pid logs/nginx.pid;

worker_rlimit_nofile 65535;

# 工作模式及连接数上限

events {

    use epoll;#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能

    worker_connections 65535;  #单个后台worker process进程的最大并发链接数

}

#设定http服务器,利用它的反向代理功能提供负载均衡支持

http {

    include mime.types;#设定mime类型,类型由mime.type文件定义

    default_type application/octet-stream;#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy)来输出文件,对于普通应用, #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.

include /usr/local/nginx/conf/reverse-proxy.conf;

#把reverse-proxy.conf配置引用进来,如果server参数配置在此文件则需要配置此项,如果不要此项,则需要把server参数配置在当前下面的server中

    sendfile on;

    keepalive_timeout 65;#连接超时时间

    gzip on;#开启gzip压缩

    client_max_body_size 50m; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户

    client_body_buffer_size 256k;#缓冲区代理缓冲用户端请求的最大字节数

    client_header_timeout 3m;

    client_body_timeout 3m;

send_timeout 3m;

#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

    proxy_connect_timeout 300s; #nginx跟后端服务器连接超时时间(代理连接超时)

    proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时)

    proxy_send_timeout 300s;   #后端服务器数据回传时间(代理发送超时)

    proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小

    proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

    proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)

    proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘

    proxy_ignore_client_abort on; #不允许代理端主动关闭连接

    server {

        listen 80;#侦听80端口

        server_name localhost;# 定义使用www.xx.com访问

charset utf-8;

        location / {

            root html;

            index index.html index.htm;

        }

        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

            root html;#前端静态文件物理路径 通过http://localhost/html/来访问当前目录下的html下的文件夹

        }

    }

}

 

2.编辑反向代理服务器配置文件,被配置负载均衡:

vim /usr/local/nginx/conf/reverse-proxy.conf

upstream monitor_server {

    server 192.168.0.131:80;

    server 192.168.0.132:80;#131与132为负载均衡服务器

}

 

server

{

    listen 80;#侦听80端口

    server_name xxx123.tk;# 定义使用www.xxx123.tk访问

    location / {

        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://monitor_server;

    }

    access_log logs/xxx123.tk_access.log;

}

 

server

{

    listen 80;

    server_name xxx456.tk;

    location / {

        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://192.168.10.40:80;

    }

    access_log logs/xxx456.tk_access.log;

}

 

3. 设置完成后执行/usr/local/nginx/sbin/nginx -t 检查配置是否正常

如果显示:the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok   configuration file /usr/local/nginx/conf/nginx.conf test is successful 则正常,否则按错误提示进行修改

 

4. 杀死Nginx进程,重启nginx,使修改生效,再把xxx123.tk域名指向公司静态IP

# /usr/local/nginx/sbin/nginx -s reload      #  /etc/init.d/nginx reload

或者/etc/init.d/nginx restart

 

另外,由于http请求最后都是由反向代理服务器传递给后段的机器,所以后端的机器原来的访问日志记录的访问IP都是反向代理服务器的IP。

要想能记录真实IP,需要修改后端机器的日志格式,这里假设后端也是一台nginx:

在后端配置文件里面加入这一段即可:

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 logs/access.log access;

 

二、nginx配置指向本地路径(目录)

参考:https://www.cnblogs.com/freeweb/p/5446632.htmllinux例子)

https://blog.csdn.net/lovelovelovelovelo/article/details/75038594windows例子)

http://desert3.iteye.com/blog/1169326(windows例子:root   D:/resin-pro-3.1.9; 

Nginx Location指令URI匹配规则:https://blog.csdn.net/xyang81/article/details/51989079

nginx.conf中对应的server {}下添加location规则,配置如下:

 

        location /image/ {

            root /;

            rewrite ^/image/(.*)$ /image_data/$1 break;

        }

 

root /;设定作用的根目录,rewrite就是真正的跳转规则,设置以image为开头的请求跳转到/image_data开头的根目录,后面的参数原封不动的添加过去,这样就实现了目录的映射,

查看评论

Nginx服务器配置

-
  • 1970年01月01日 08:00

nginx通过访问路径配置反向代理的最简配置

刚刚调试成功,留作参考:events { worker_connections 10240; } http{ server { listen 83; ...
  • foren_whb
  • foren_whb
  • 2018-03-18 16:44:30
  • 144

Nginx反向代理的目录访问问题

从昨天就开始纠结了,在做实验的时候,遇到目录访问的问题,如下 前端nginx vhost的设置如下,代理访问后端的192.168.0.37 server { ...
  • dyllove98
  • dyllove98
  • 2013-05-13 23:21:18
  • 16966

Nginx 与 tomcat 反向代理配置

Nginx 与 tomcat 反向代理配置   由于本人资金有限,所以经常需要一个服务器中同时运行多个网址,但是问题来了,域名解析是只能80端口进入的,不支持其他端口,而且也不能带后缀,所以如何让多...
  • chajinglong
  • chajinglong
  • 2016-10-12 11:33:18
  • 2473

关于nginx+tomcat搭建反向代理时路径和端口问题

1 、在配置nginx的反向代理时在localtion下需要 location / {             proxy_pass http://192.168.139.137:8080;  ...
  • u011922760
  • u011922760
  • 2016-10-22 17:02:10
  • 3260

Nginx + Tomcat HTTPS配置

HTTPS证书申请 生成证书请求文件CSR,将私钥文件保存到本地,如/data/web/crt/server.key 提交CSR,申请证书 获取服务器证书,将Email中的SSL证书文本段和中级证书文...
  • rocks_lee
  • rocks_lee
  • 2017-02-03 16:18:53
  • 964

nginx反向代理部署服务到本地机房

nginx.confserver { listen 80; server_name temporary.iwookong.com; location /{ pr...
  • dwl764457208
  • dwl764457208
  • 2017-06-09 11:31:40
  • 378

windows本地使用Nginx反向代理解决前后端联调的跨域访问

第一种使用Nginx 首先在服务端所在的电脑安装Windows版本的Nginx http://nginx.org/en/download.html (只能在本地搭建Nginx服务器,云服务器搭...
  • KH717586350
  • KH717586350
  • 2017-12-14 15:02:39
  • 298

Nginx浏览本地目录设置

老是记不住,干脆放在这里记录下来。server { listen 81; server_name localhost; location = /favicon....
  • sheismylife
  • sheismylife
  • 2014-01-08 09:53:34
  • 3701

Nginx反向代理新篇-使用location对多个URL做反向代理

worker_processes 1; events { worker_connections 1024; } http { include mime.type...
  • xuxile
  • xuxile
  • 2016-06-18 12:24:28
  • 14254
    个人资料
    持之以恒
    等级:
    访问量: 115万+
    积分: 1万+
    排名: 1816
    最新评论