博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx如何实现反向代理
阅读量:6244 次
发布时间:2019-06-22

本文共 1884 字,大约阅读时间需要 6 分钟。

Nginx的2种用途

  • 静态内容的web服务器;

  • 反向代理服务器;

Nginx作为反向代理的特点

  • 接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送后后端web服务器,极大的减轻后端web服务器的压力;

  • nginx代理和后端web服务器间无需长连接;

  • 发送响应报文时,是边接收来自后端web服务器的数据,边发送给客户端的;

涉及的模块

  • Proxy:标准的HTTP模块,实现反向代理功能

  • Upstream:标准的HTTP模块,对后端web服务器调度做负载均衡功能;

  • FastCGI:标准HTTP模块,将php动态请求代理至后端PHP服务器;

配置部署

说明:本篇中,Nginx负责静态访问处理,动态访问将会被代理至后端PHP服务器;

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
# vi  /etc/nginx/nginx.html
worker_processes  2;
pid    
/var/run/nginx
.pid;
events {
    
worker_connections  1024;
}
http {
    
include       mime.types;
    
default_type  application
/octet-stream
;
    
log_format  main  
'$remote_addr - $remote_user [$time_local] "$request" '
                      
'$status $body_bytes_sent "$http_referer" '
                      
'"$http_user_agent" "$http_x_forwarded_for"'
;
    
sendfile        on;
    
keepalive_timeout  65;
    
upstream backend {
        
server    172.16.25.112:9000;
    
}
    
server {
        
listen          80;
        
server_name     xxrenzhe.lnmmp.com;
        
access_log
/var/log/nginx/lnmmp
.access.log;
        
error_log
/var/log/nginx/lnmmp
.errors.log notice;
        
root           
/www/lnmmp
.com;
        
location / {
            
try_files $uri @missing; 
# 先访问本地的静态资源,若失败,则转入missing处理块;
        
}
        
location @missing {
            
rewrite ^(.*[^/])$ $1/ permanent; 
# 直接访问域名或IP地址时,在其后增加结尾符/,并返回301
            
rewrite ^ 
/index
.php last; 
# 将始终无法访问到的资源(如404错误),全部重定向至首页
        
}
        
# 禁止system目录访问,但允许指定类型的静态文件访问
        
location ~* ^
/system/
.+\.(jpg|jpeg|png|gif|css|js|swf|flv|ico)$ {
            
expires max;
            
tcp_nodelay off;
            
tcp_nopush on;
        
}
        
# 访问/system/时,则直接跳转回首页
        
location ~ 
/system/ 
{
            
rewrite ^ 
/index
.php last;
        
}
        
location ~* \.php$ {
            
default_type text
/html
;
            
charset      utf-8;
            
fastcgi_pass backend;
            
fastcgi_index index.php;
            
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            
include fastcgi_params;
        
}
    
}
}

访问验证

静态文件访问由nginx直接返回

访问动态文件时转入后端php服务器

直接访问域名或IP地址时跳转至主页

不存在文件访问跳转至主页

访问system目录下的静态文件正常

访问system路径跳转至主页

本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1405447,如需转载请自行联系原作者
你可能感兴趣的文章
大数据教程(1.8):Linux之SSH免密登录配置
查看>>
ftp passive mode
查看>>
安装问题Error: dl failure on line 864
查看>>
oracle表分区详解(按天、按月、按年等)
查看>>
yum update upgrade区别
查看>>
angularjs select 三级联动
查看>>
BufferedReader指定编码及乱码问题解决
查看>>
Zabbix3.0监控Centos 6配置
查看>>
解决MAC下svn run cleanup interrupted错误
查看>>
谈谈Android中的Divider
查看>>
Python基础笔记
查看>>
对Vsftpd的一些总结
查看>>
搭建高可用mongodb集群(二)—— 副本集
查看>>
001-Python运算符
查看>>
saltstack使用之二(完成部署编译nginx以及部分cp模块的使用)
查看>>
Test20160120
查看>>
Android WindowManager$BadTokenException异常
查看>>
ELK学习3 启动es常见错误或问题
查看>>
Linux快捷键和帮助
查看>>
2015年10月22日作业
查看>>