全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
123
返回列表 发新帖
楼主: gudu19882003

[疑问] LANMP的伪静态应该用apache的还是nginx的?

[复制链接]
发表于 2011-1-18 22:14:38 | 显示全部楼层
原帖由 windywinter 于 2011-1-18 20:41 发表

结论给过了,理由也给过了。
众说纷纭,自然大家都希望你信他的,但到底信谁的你自己决定吧。

谢谢 上次读 没太读明白。。 这次仔细看了下 。理解了些

还有不明白的
  1. # proxy the PHP scripts to Apache listening on 127.0.0.1:81
  2. location ~ \.php$ {
  3.         proxy_pass http://127.0.0.1:81;
  4.         include proxy_params;
  5. }
复制代码
是不是之这样写就行了?  nginx绑定好网站的目录。 然后APACHE配置不用设置什么, 就实现了 访问的静态文件都是NGINX处理的,PHP 是由apache处理的
----------


下面是  lanmp1.0自动生成的VHOST
  1. server {
  2. error_log /usr/local/nginx/logs/test1.test.com-error_log warn;
  3. listen 222.222.222.222:80;
  4. server_name test1.test.com www.test1.test.com test.com www.test.com;
  5. access_log off;
  6. location ~ .*\.(jpg|jpeg|png|gif|bmp|ico|js|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
  7. access_log /usr/local/apache/domlogs/test1.test.com combined;
  8. root /home/test/public_html;
  9. expires 7d;
  10. try_files $uri @backend;
  11. }
  12. error_page 400 401 402 403 404 405 406 407 408 409 500 501 502 503 504 @backend;
  13. location @backend {
  14. internal;
  15. client_max_body_size    100m;
  16. client_body_buffer_size 128k;
  17. proxy_send_timeout   300;
  18. proxy_read_timeout   300;
  19. proxy_buffer_size    4k;
  20. proxy_buffers     16 32k;
  21. proxy_busy_buffers_size 64k;
  22. proxy_temp_file_write_size 64k;
  23. proxy_connect_timeout 30s;
  24. proxy_redirect http://test1.test.com:81 http://test1.test.com;
  25. proxy_redirect http://www.test1.test.com:81 http://www.test1.test.com;
  26. proxy_pass http://222.222.222.222:81;
  27. proxy_set_header   Host   $host;
  28. proxy_set_header   X-Real-IP  $remote_addr;
  29. proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  30. }
  31. location ~* \.(ftpquota|htaccess|asp|aspx|jsp|asa|mdb)$ {
  32. deny  all;
  33. }
  34. location / {
  35. client_max_body_size    100m;
  36. client_body_buffer_size 128k;
  37. proxy_send_timeout   300;
  38. proxy_read_timeout   300;
  39. proxy_buffer_size    4k;
  40. proxy_buffers     16 32k;
  41. proxy_busy_buffers_size 64k;
  42. proxy_temp_file_write_size 64k;
  43. proxy_connect_timeout 30s;
  44. proxy_redirect http://test1.test.com:81 http://test1.test.com;
  45. proxy_redirect http://www.test1.test.com:81 http://www.test1.test.com;
  46. proxy_pass http://222.222.222.222:81/;
  47. proxy_set_header   Host   $host;
  48. proxy_set_header   X-Real-IP  $remote_addr;
  49. proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  50. }
  51. }
复制代码
效果 和上面的一样么?谢谢了。实在头晕了。好想用上lanmp啊
发表于 2011-1-18 23:16:28 | 显示全部楼层
我需要恪守一个原则,即我不能无偿完整的给出适用于某一个站或某一个人的配置文件,希望你能理解。

配置Apache时要当作没有Nginx前端,即该怎么配置怎么配置,除了监听的端口不一样,以及不用配置SSL(配了也没事)。

Nginx的配置文件大概应该是这样的:
  1. server {
  2.         listen   ...;

  3.         server_name xxx;
  4.         root xxx;
  5.         index xxx;

  6.         #rewrite规则写在下面
  7.         rewrite xxx;
  8.         rewrite xxx2;

  9.         # proxy the PHP scripts to Apache listening on 127.0.0.1:81
  10.         location ~ \.php$ {
  11.                 proxy_pass http://127.0.0.1:81;
  12.                 include proxy_params;
  13.         }

  14.         ...
  15. }
复制代码
上面这种写法,适用于你能够写出完整、正确的rewrite规则,即uri经过你的rewrite规则,最后都会变成实际存在的静态文件或.php文件。如果你给不出这样的规则,但是你能够给出Apache的rewrite规则,那么可以把上面的rewrite xxx替换成下面这一段,把rewrite的任务交给Apache。
  1.         try_files $uri $uri/ @apache;
  2.         location @apache {
  3.                 proxy_pass http://127.0.0.1:81;
  4.                 include proxy_params;
  5.         }
复制代码
我给出的第一种写法与lnamp 1.0生成的vhost文件效果是不一样的。lnamp 1.0直接将rewrite的任务交给了Apache,与我给出的第二种写法类似。
我想我举个例子你就知道问题在哪了——如果有一条rewrite规则是/archive/110 => /cache/110.html,那么rewrite在nginx写和rewrite在Apache写就有了本质区别——写在nginx中,110.html由nginx返回给客户端,写在Apache中,110.html是由Apache通过ngnix返回给客户端。如果你的网页都是这种情况,那还要nginx前端干什么?

评分

参与人数 1威望 +15 收起 理由
eudx + 15 分神马的虽然都是浮云!但实在感谢啊。今天明 ...

查看全部评分

发表于 2011-1-19 00:29:18 | 显示全部楼层
谢谢 。 我要慢慢理解  关于rewrite写在哪里 已经稍微明白一点了。放在APACHE里好像处理REWRITE就要多步骤
不看rewrite的话  lanmp1.0 的处理PHP 的方式应该和
笔记里说的大概相同吧
我看 lanmp1.0 没有 location ~ \.php$

而是 location ~ .*\.(jpg|jpeg|png|gif|bmp|ico|js|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)
只处理静态文件 然后剩下的PHP 由 APACHE来处理
是这样的吧  这样的效果应该是一样的吧

[ 本帖最后由 eudx 于 2011-1-19 00:30 编辑 ]
发表于 2011-1-19 00:37:31 | 显示全部楼层
lanmp 1.0列举了一些静态文件,归nginx处理,余者归apache。但是里面少了html、txt等等。
location ~ \.php$这个写法是指定php归apache处理,其他的由nginx另想办法。
发表于 2011-1-19 00:41:04 | 显示全部楼层
感谢。哈哈  我去多折腾折腾。
我这菜鸟也要进步的嘛
发表于 2011-1-19 03:55:35 | 显示全部楼层
弄了半天 nginx 的rewrite 愣是没起作用 规则改了好多次 DZ1.5的
哎。只好用APACHE的REWRITE
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-1-31 08:51 , Processed in 0.061166 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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