设为首页 收藏本站
查看: 887|回复: 0

[经验分享] Nginx+Apache配置详解

[复制链接]

尚未签到

发表于 2018-11-21 13:09:45 | 显示全部楼层 |阅读模式
  我们依然尽可能采用yum来安装我们需要的软件,由系统官方维护的软件,其安全性和稳定性都值得信赖,并且容易管理,升级方便,但是在CentOS和RHEL的官方yum源中暂时没有Nginx等软件包,所以我们需要使用EPEL的yum源。EPEL是什么,EPEL的yum源怎么添加,点击这里 http://www.linuxidc.com/Linux/2012-10/71850.htm 查看。
  本文将要介绍的Nginx+Apache结构,其实就是Nginx做前端,Apache做后端,充分发挥他们各自的优势之处。Nginx对于高并发性能出众,Proxy功能强效率高,占用系统资源少,而Apache在高并发时对队列的处理比FastCGI(Nginx需要通过fastcgi等方式运行php)更好,并且在处理动态php页面时,mod_php也比php-cgi更稳定更高效。
  也就是说,我们的目的是,由Nginx来接收客户端的请求,如果是动态页面请求,就交给Apache处理,然后经由Nginx再返回给客户端,其余的请求,则由Nginx自己处理,然后把结果返回给客户端,。当然了,你完全可以让Nginx只做Proxy功能,所有的请求都交给Apache,Tomcat等处理,本文使用前者。
  但是,在本文中,我们实现的是在一台服务器里一个Nginx加一个Apache的简单结构,在实际应用中,可能前端是由一台或多台Nginx组成的代理服务器,后端则是多台Apache或其他Web服务器,再加上多种第三方软件而组成的集群。
  前提约定:假设我们系统默认主站点名是www.linuxidc.com,网站根目录是/var/www/linuxidc
  第一步,安装并配置Nginx,安装完之后,配置文件都在/etc/nginx目录下,主设置文件/etc/nginx/nginx.conf:
[root@test ~]# yum -y install nginx[root@test ~]# vi /etc/nginx/nginx.confuser              nginx;worker_processes  2;  error_log  /var/log/nginx/error.log;pid        /var/run/nginx.pid;  events {    use epoll;    worker_connections  2048;}  http {    include      /etc/nginx/mime.types;    include      /etc/nginx/proxy.conf;    include      /etc/nginx/gzip.conf;    default_type  application/octet-stream;    index        index.html index.htm index.php;      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;    tcp_nopush        on;    server_tokens      off;    keepalive_timeout  60;    server_names_hash_bucket_size 128;      server {        listen      80;        server_name  www.linuxidc.com;        root        /var/www/linuxidc;        location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {            expires 2d;        }        # 如果你需要客户端缓存的内容以及媒体,图片等文件固定放置一些目录下的话,就把上面那个        # location注释掉,用下面这种方式        # location ~ ^/(images|javascript|js|css|flash|media|static)/  {        #  expires 2d;        #}                  location ~ .*\.(php?|cgi|pl|py)$ {            proxy_pass http://127.0.0.1:8888;        }        location ~ /\.ht {            deny  all;        }        location ~ /.+\.(inc|conf|cnf) {            deny  all;        }        access_log  /var/log/nginx/linuxidc-access.log main;        #access_log off    }    # Load config files from the /etc/nginx/conf.d directory    include /etc/nginx/conf.d/*.conf;}[root@test ~]# vi /etc/nginx/proxy.confproxy_redirect          off;proxy_hide_header      Vary;proxy_set_header        Accept-Encoding '';proxy_set_header        Host            $host;proxy_set_header        X-Real-IP      $remote_addr;proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size    10m;client_body_buffer_size 128k;proxy_connect_timeout  90;proxy_send_timeout      90;proxy_read_timeout      90;proxy_buffer_size      4k;proxy_buffers          32 4k;proxy_busy_buffers_size 64k;  [root@test ~]# vi /etc/nginx/gzip.confgzip on;gzip_http_version 1.0;gzip_disable      "MSIE [1-6]\.";gzip_disable      "Mozilla/4";gzip_comp_level  3;gzip_proxied      any;gzip_vary        on;gzip_buffers      4 16k;gzip_min_length  1100;gzip_types        text/plain text/xml text/css application/xml application/xhtml+xml application/rss+xml application/atom_xml application/javascript application/x-javascript;  为了让nginx.conf简洁,我把一些相关的共通设定放到同一个专门的文件里,然后在主配置文件nginx.conf里加载。如果你使用了VirtualHost运营多个站点,你可以根据不同站点的需求而配置不同的设定文件,然后分别在各自的server域里加载。
  第二步,安装并配置Apache,配置文件在/etc/httpd/下,我们修改主配置文件/etc/httpd/conf/httpd.conf,配置文件太长,我只写我需要改的地方:
[root@test ~]# yum -y install httpd[root@test ~]# vi /etc/httpd/conf/httpd.confListen 80↓改成Listen 127.0.0.1:8888  DocumentRoot "var/www/html"↓改成DocumentRoot "/var/www/linuxidc"  ↓改成    Options Indexes FollowSymLinks    ↓改成如下,允许CGI,SSI    Options Includes ExecCGI FollowSymLinks      AllowOverride None    ↓改成如下,支持.htaccess    AllowOverride All      Order allow,deny    Allow from all   ServerSignature On↓改成如下,在现实错误页面的时候不会显示服务器和apache的版本ServerSignature Off  #AddHandler cgi-script .cgi↓改成如下,cgi脚本使用.cgi,.pl,.pyAddHandler cgi-script .cgi .pl .py  第三步,设置VirtualHost(如果你需要在本机上运营多个站点,否则略过此步):
  1.修改/etc/httpd/conf/httpd.conf:
#NameVirtualHost *:80↓改成如下NameVirtualHost 127.0.0.1:8888#追加下面4行,www.linuxidc.com是我们的默认主站    ServerName www.linuxidc.com   Include virtual/*.conf  2.修改/etc/nginx/nginx.conf,在server{}域的后面追加如下一句:
  include /etc/nginx/virtual/*.conf;
  3.假设我们还要在本机上运行一个站点叫www.88181.com:
[root@test ~]# mkdir /etc/nginx/virtual/[root@test ~]# mkdir /etc/httpd/virtual/[root@test ~]# vi /etc/nginx/virtual/www.88181.com.confserver {    listen      80;    server_name  www.88181.com;    root /var/www/88181;    location ~* .*\.(gif|jpg|jpeg|png|bmp|ico|css|js|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {        expires 24h;    }      location ~ .*\.(php?|cgi|pl|py)$ {        proxy_pass http://127.0.0.1:8888;    }    location ~ /\.ht {        deny  all;    }    location ~ /.+\.(inc|conf|cnf) {        deny  all;    }    access_log  /var/log/nginx/88181-access.log main;    #access_log off}  [root@test ~]# vi /etc/httpd/virtual/www.88181.com.conf    ServerAdmin webmaster@88181.com    DocumentRoot /var/www/88181    ServerName www.88181.com    UseCanonicalName Off          ErrorLog logs/www.88181.com-error_log    CustomLog logs/www.88181.com-access_log common  第四步,安装MySql,参照这篇教程 http://www.linuxidc.com/Linux/2012-10/71852.htm 。
  第五步,安装php及其他常用组件:
  [root@test ~]# yum -y install php php-mysql php-gd php-xml php-mbstring php-mcrypt
  第六步,安装php加速器eaccelerator和php-pecl-memcached模块,提高性能:
  [root@test ~]# yum install php-eaccelerator php-pecl-memcached
  设定文件分别是/etc/php.d/eaccelerator.ini和/etc/php.d/memcached.ini,如果你采用默认设置,就不需要修改设定文件了。
  第七步,安装并配置Zend提供的php加速、解密软件,yum源里没有,直接从官方下载即可,不需要编译,下载的时候注意根据你的系统选择32位或者64位的版本。
  1:如果你用的php是php5.3.x版本,需要安装的是Zend Guard Loader:
[root@test ~]# ls ZendGuardLoader-php-5.3-linux-glibc23-i386/README.txt  php-5.3.x#小提示,看解压目录下的README.txt里有使用说明[root@test ~]# mv -T ZendGuardLoader-php-5.3-linux-glibc23-i386 /usr/lib/php/ZendGuardLoader-php-5.3[root@test ~]# vi /etc/php.d/zend.ini#添加如下内容,保存退出[Zend Guard Loader]zend_extension="/usr/lib/php/ZendGuardLoader-php-5.3/php-5.3.x/ZendGuardLoader.so"zend_loader.enable=1zend_loader.disable_licensing=0zend_loader.obfuscation_level_support=3  2:如果你用的php是php5.2或更早的版本,需要安装的是Zend Optimizer:
[root@test ~]# tar -xzvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386EULA-ZendOptimizer  Inventory.xml  LICENSE  README-ZendOptimizer  data  md5#小提示1,看解压目录下的README-ZendOptimizer里有使用说明[root@test ~]# ls ZendOptimizer-3.3.9-linux-glibc23-i386/data4_2_0_comp  4_3_x_comp  5_0_x_comp  5_2_x_comp4_2_x_comp  4_4_x_comp  5_1_x_comp  poweredbyoptimizer.gif#小提示2,解压目录下的data目录下根据不同的php版本提供了不同的so文件,假设我们的版本是php5.1.x的[root@test ~]# mv -T ZendOptimizer-3.3.9-linux-glibc23-i386 /usr/lib/php/ZendOptimizer-3.3.9[root@test ~]# vi /etc/php.d/zend.ini#添加如下内容,保存退出[Zend Optimizer]zend_optimizer.optimization_level=1zend_extension = "/usr/lib/php/ZendOptimizer-3.3.9/data/5_1_x_comp/ZendOptimizer.so"  第八步,启动Apache和Nginx,并测试(MySql就不测试了):
[root@test ~]# /etc/init.d/httpd start[root@test ~]# /etc/init.d/nginx start[root@test ~]# chkconfig httpd on[root@test ~]# chkconfig nginx on[root@test ~]# mkdir /var/www/linuxidc[root@test ~]# echo "hello,linuxidc" > /var/www/linuxidc/index.html[root@test ~]# echo -e "

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637820-1-1.html 上篇帖子: apache日志轮询技术(cronolog and rotatelogs)小结 下篇帖子: Apache参数KeepAlive该如何配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表