huashan8 发表于 2018-11-24 12:57:49

nginx+apache负载均衡

  学习过程记录如下:感谢为我提供帮助的朋友们!
  1: 在一台机器上安装nginx(过程省略),该机器的ip为:192.168.1.2
  2:在另一台机器上安装php+mysql+apache(过程省略) ,该机器的ip为:192.168.1.9
  3:将nginx和apache整合起来!
  nginx.conf如下:

[*]# cat nginx.conf
[*]user www www;
[*]worker_processes 4;
[*]
[*]# [ debug | info | notice | warn | error | crit ]
[*]error_log /usr/local/nginx/logs/nginx_error.log crit;
[*]pid /usr/local/nginx/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;
[*]}
[*]
[*]http
[*]{
[*]include mime.types;
[*]default_type application/octet-stream;
[*]source_charset GB2312;
[*]server_names_hash_bucket_size 256;
[*]client_header_buffer_size 256k;
[*]large_client_header_buffers 4 256k;
[*]
[*]#size limits
[*]client_max_body_size 50m;
[*]client_body_buffer_size 256k;
[*]client_header_timeout 3m;
[*]client_body_timeout 3m;
[*]send_timeout 3m;
[*]keepalive_timeout 120;
[*]tcp_nodelay on;
[*]
[*]include vhosts/upstream.conf;
[*]include vhosts/www.def.com.conf;
[*]
[*]}
  在nginx的安装目录下新建一个conf目录,目录里有两个文件,分别为upstream.conf和www.def.com.conf 这两个文件的内容如下:

[*]# pwd
[*]/usr/local/nginx/conf
[*]# cd vhosts/
[*]# ls
[*]upstream.conf www.def.com.conf
[*]# pwd
[*]/usr/local/nginx/conf/vhosts
[*]# cat upstream.conf
[*]upstream www.def.com {
[*]server 192.168.1.9:80;
[*]}
[*]# cat www.def.com.conf
[*]server
[*]{
[*]listen 80;
[*]server_name www.def.com;
[*]charset GB2312;
[*]index index.php index.html index.htm;
[*]root /usr/vhome/d/e/f/def.com/www;
[*]
[*]location ~ ^/NginxStatus/ {
[*]stub_status on;
[*]access_log off;
[*]}
[*]
[*]location / {
[*]proxy_redirect off ;
[*]proxy_set_header Host $host;
[*]proxy_set_header X-Real-IP $remote_addr;
[*]proxy_set_header REMOTE-HOST $remote_addr;
[*]proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
[*]client_max_body_size 50m;
[*]client_body_buffer_size 256k;
[*]proxy_connect_timeout 30;
[*]proxy_send_timeout 30;
[*]proxy_read_timeout 60;
[*]proxy_buffer_size 256k;
[*]proxy_buffers 4 256k;
[*]proxy_busy_buffers_size 256k;
[*]proxy_temp_file_write_size 256k;
[*]proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
[*]proxy_max_temp_file_size 128m;
[*]proxy_pass http://www.def.com;
[*]}
[*]
[*]#location ~* \.(jpg|jpeg|gif|png|swf|html)$ {
[*]#if (-f $request_filename) {
[*]#root /usr/vhome/d/e/f/def.com/www;
[*]#expires 1d;
[*]#break;
[*]#} ##将这一段注释掉,则所有的访问都叫给apache去处理!否则静态文件会去执行192.168.1.2下的/usr/vhome/d/e/f/def.com/www下的内容。我在192.168.1.9的/usr/vhome/d/e/f/def.com/www下方一个index.php,在192,168.1.2的/usr/vhome/d/e/f/def.com/www下放一个a.jpg和index.html文件,然后手动运行www.def.com/index.html和www.def.com/a.jpg则会执行192.168.1.2下的内容(显然是nginx处理了静态页面)
[*]#}
[*]
[*]log_format access '$remote_addr - $remote_user [$time_local] "$request" '
[*]'$status $body_bytes_sent "$http_referer" '
[*]'"$http_user_agent" $http_x_forwarded_for';
[*]access_log /exp/nginxlogs/www.def.com_access.log access;
[*]
[*]}
[*]#
  然后再192.168.1.9上httpd.conf中的配置如下:
  在httpd.conf中的最后加入一句:
  Include conf/vhost.conf
  在/usr/local/apache2/conf目录下vhosts.conf文件内容如下:

[*]# pwd
[*]/usr/local/apache2/conf
[*]# cat vhost.conf
[*]NameVirtualHost *
[*]
[*]ServerName www.def.com
[*]ScriptAlias /cgi-bin/ /usr/vhome/d/e/f/def.com/cgi-bin/
[*]DocumentRoot /usr/vhome/d/e/f/def.com/www
[*]DirectoryIndex index.html index.jsp index.php
[*]
[*]Order allow,deny
[*]Allow from all
[*]
[*]php_admin_value open_basedir /usr/vhome/d/e/f/def.com:/usr/vhome/tmp:/opt/tomcat/bin
[*]
  最后在一台客户端上,我的是xp系统,做本地解析,在C:\WINDOWS\system32\drivers\etc下hosts文件添加记录如下:

[*]192.168.1.2 def.com
[*]192.168.1.2 www.def.com
  并在1912.168.1.9上:
  mkdir -p /usr/vhome/d/e/f/def.com/www
  cd /usr/vhome/d/e/f/def.com/www
  touch index.php
  内容为:

[*]# cat index.php
[*]
[*]# pwd
[*]/usr/vhome/d/e/f/def.com/www
[*]#
  测试访问见附件:

页: [1]
查看完整版本: nginx+apache负载均衡