nginx做反向代理+apache

先上个规划图,自己随便画的,大家也随便看看

192.168.1.119为nginx做反向代理并处理静态页面,apache处理动态页面,nfs共享网站家目录,svn代码管理。

192.168.101为apache处理动态页面,挂载192.168.1.119的共享目录。

192.168.1.96为mysql数据库,允许两台web服务的连接权限。

系统使用centos6.5

一,配置192.168.1.119

1.首先在192.168.1.119上安装nginx+apache+php+nfs+svn

yum install -y nginx httpd php php-mysql nfs-utils portmap subversion

2.修改nginx配置文件

vim /etc/nginx/nginx.conf
user  www www;

worker_processes auto;

error_log  /home/wwwlogs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
     {
          use epoll;
          worker_connections 51200;
          multi_accept on;
     }

http
     {
          include       mime.types;
          default_type  application/octet-stream;

          server_names_hash_bucket_size 128;
          client_header_buffer_size 32k;
          large_client_header_buffers 4 32k;
          client_max_body_size 50m;

          sendfile on;
          tcp_nopush     on;

          keepalive_timeout 60;

          tcp_nodelay on;

          fastcgi_connect_timeout 300;
          fastcgi_send_timeout 300;
          fastcgi_read_timeout 300;
          fastcgi_buffer_size 64k;
          fastcgi_buffers 4 64k;
          fastcgi_busy_buffers_size 128k;
          fastcgi_temp_file_write_size 256k;

          gzip on;
          gzip_min_length  1k;
          gzip_buffers     4 16k;
          gzip_http_version 1.0;
          gzip_comp_level 2;
          gzip_types       text/plain application/x-javascript text/css application/xml;
          gzip_vary on;
          gzip_proxied        expired no-cache no-store private auth;
          gzip_disable        "MSIE [1-6]\.";

          #limit_conn_zone $binary_remote_addr zone=perip:10m;
          ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

          #log format
          log_format  access  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
             ‘$status $body_bytes_sent "$http_referer" ‘
             ‘"$http_user_agent" $http_x_forwarded_for‘;

upstream backend_http {
     server 192.168.1.101:80;
     server 127.0.0.1:88;
}

server
     {
          listen 80 default;
          #listen [::]:80 default ipv6only=on;
          server_name 192.168.1.119;
          index index.html index.htm index.php;
          root  /home/wwwroot/repo;
          access_log logs/access.log combined;

          #location / {
          #     try_files $uri @apache;
          #     }

          #location @apache {
          #     internal;
          #     proxy_pass http://127.0.0.1:88;
          #     include proxy.conf;
          #     }
         
          location ~ [^/]\.php(/|$)
               {
                    proxy_pass http://backend_http;
                    include proxy.conf;
               }

          location /nginx_status {
               stub_status on;
               access_log   off;
          }

          location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
               {
                    expires      30d;
               }

          location ~ .*\.(js|css)?$
               {
                    expires      12h;
               }

          access_log  /home/wwwlogs/access.log  access;
     }
include vhost/*.conf;
}
检查配置文件
nginx -t
启动服务
nginx
重新加载配置
nginx -s reload

3.修改apache配置文件

vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /home/wwwroot/repo
    ServerName 192.168.1.119
</VirtualHost>

启动服务
service httpd start
chkconfig httpd on

4.创建svn仓库

mkdir /opt/svn && svnadmin create /opt/svn/repo
使用密码认证
vim /opt/svn/repo/conf/svnerve.conf
password = 取消这行的注释
添加用户和密码
echo "charlie = charlie" >> /opt/svn/repo/conf/passwd
启动服务
svnserve -d -r /opt/svn
取出svn仓库
cd /home/wwwroot
svn co svn://localhost/repo
修改svn更新后直接到网站家目录
cd /opt/svn/repo/hooks
cp post-commit.tmpl post-commit
vim post-commit
export LANG=en_CN.UTF-8
svn update /home/wwwroot/repo --username charlie --password charlie --no-auth-cache
#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf (此行注释)
添加执行权限
chmod +x post-commit

5.配置共享目录

vim /etc/exports
/home/wwwroot/repo 192.168.1.0/24(sync,rw,no_root_squash)
启动服务
/etc/init.d/rpcbind start
/etc/init.d/nfs start
查看共享目录
exportfs -v
加载共享目录使生效
exportfs -r

二,配置192.168.1.101

6.安装httpd

yum install -y httpd php php-mysql

7.配置apache

vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /home/wwwroot/repo
    ServerName 192.168.1.101
</VirtualHost>

8.挂载共享目录

mkdir /home/wwwroot/repo -pv
mount -t nfs 192.168.1.119:/home/wwwroot/repo /home/wwwroot/repo

9.启动服务

service httpd start
chkconfig httpd on

三,安装mysql

10.安装mysql

yum install -y mysql mysql-server

11.启动服务

service mysqld start
chkconfig mysqld on

12.mysql创建密码

mysqladmin -uroot -password charlie

13.授权用户

mysql -uroot -pcharlie
grant all on *.* to [email protected]‘192.168.1.%‘ identified by ‘charlie‘;
flush privileges;

四,测试网站

14.svn导出到本地

新建个测试页面

然后访问测试

刷新后版本不同,证明客户端请求php页面会轮询给后端的apache服务器。

如果客户端请求的页面不能保持会话,会经常切换页面导致用户账户登录等问题,所以需要更改nginx配置

添加ip_hash保持会话连接,然后重启nginx -s reload

再次刷新页面不会切换

测试连接数据库,下面页面是测试页

添加并确认

到两台网站服务器上查看是否存在该文件,并检查内容是否一致!

然后访问,证明成功连接后端数据库

时间: 2024-10-18 20:01:33

nginx做反向代理+apache的相关文章

【Nginx】使用Nginx做反向代理时,关于被代理服务器相应的超时设置

阅读目录 > 参考的优秀文章 > 设置等待被代理服务器的最大响应时间 > 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往往超过60秒.而Nginx默认设置超时时间为60秒. 针对这一情况,需修改默认配置.因配置项中涉及超时的选项太多,这里记录一下. 等待被代理服务器的最大响应时间为120秒,需加如下配置: proxy_read_timeout 1

Nginx做反向代理总是被系统kill

公司使用Nginx做反向代理,以前都挺正常的,最近不知怎么回事总是无端被系统kill,而在nginx错误日志中也没有信息输出. 网上查了很多资料,也没什么靠谱的回答,唯一觉得有点关联的就是linux OOM Killer了,这篇文章感觉有点关系:理解和配置 Linux 下的 OOM Killer.也给出了相应的解决办法. 但我还是不太放心,万一最后还是被kill了怎么办,想来想去,最后还是决定写一个脚本来进行监控. 脚本功能: 每隔5秒检查一次,查看Nginx进程是否存在,如果不存在,就重新启动

CentOS 7 安装Nginx做反向代理

题记 须要使用nginx的反向代理功能,測试环境为centos+NGINX 1.8.0. 跳过一些繁琐的问题,直接记录核心 步骤 (1)centos 安装在VM中.因此须要注意网络连接问题 (2)安装nginx使用的是具有网络的yum功能 (3)配置centos防火墙,须要开启80 port (4)nginx 反向代理配置 (5)性能优化设置(兴许工作...) 实现 一. yum安装nginx 先加入nginx源,測试使用最新的nginx 1.8.0 rpm -ivh http://nginx.

nginx做反向代理时出现302错误

现象:nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 详细现象如下: 浏览器请求登录页: 输入账号密码点击登录: 很明显登录后跳转的地址少了端口号. 原因:proxy.conf文件中定义的proxy_set_header Host $host; 意思是nginx接收到浏览器请求后修改请求头中的host信息,然后再把请求转发给后端真实服务节点,服务节点响应后把返回信息传送给nginx,而由于nginx是使用的非80端口做代理,后端服务节点却依然以为nginx是80端口,所以响

nginx 配置反向代理(Apache+nginx)

nginx 由于其高效的并发处理能力,而开始被越来越多的人接受和认可,现在很多网站已经完全用nginx代替apache来处理静态 页面,但是动态页面的处方面,apache还是有着自己独到之处的. 下面说下何为反向代理,以及为何进行反向代理.按照百科的介绍:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器.说得简明点

nginx做反向代理和后端web服务器之间的交互

1.Nginx是什么? Nginx就是反向代理服务器. 首先我们先来看看什么是代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端.比如GoAgent,翻墙神器. 一个完整的代理请求过程为:客户端首先与代理服务器创建连接,然后根据代理服务器所使用的代理协议,请求对目标服务器创建连接.或则获得目标服务器的指定资源.Web代理服务器是网络的中间实体.代理位于Web客户端和Web服务器之间,扮演"中间人"的角色. HTTP的代理服务

nginx做反向代理不显示图片的问题

在nginx的配置文件中加上 location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$        {            access_log off;            expires 30d;            root /www/htdocs/market;            break;        } 云上是这么处理的: location /mangersis { proxy_pass http://localhost:8071; c

NGINX如何反向代理Tomcat并且实现Session保持

简介 LNMT=Linux+Nginx+MySQL+Tomcat: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器: 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选: 架构需求 Tomcat实现JSP动态请求解析的基本架构 说明:由后端Tomcat负责解析动态jsp请求,但为了提高响应性能,在同一主机内配置Nginx做反向代理,转发所有请求至tomcat即可: 完整的LNMT架构设计 说明:本篇博客主要讲解单台Hapro

在ubuntu上面配置nginx实现反向代理和负载均衡

上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托管(Self-hosting)的应用程序,然后将其部署到了一台Ubuntu的虚拟机上面,通过mono将其顺利地运行了起来,这样也就实现了.NET应用程序在Liunx系统上面的移植. 这一篇要讲解的是进一步的实验,我们都知道Nginx这款服务器,它可以用来做反向代理服务器,也可以做负载均衡. 关于ng