Nginx反向代理到底该如何部署?

欧阳止水 发布于 2017/06/18 09:56
阅读 1K+
收藏 2

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

 

我没在线上实际部署过nginx反向代理,看到网上的文章也是云云雾里!有的部署前段,有的部署后端,写来写去都没突出个重点。

 

有实际在线上部署过的大佬帮忙解答下这个小白问题!还有就是能否普及下nginx安全之类的知识?,毕竟暴露在公网提供服务的。

加载中
0
_yg
_yg

第二种吧,第一种我是没见过,也不知道能不能实现

_yg
_yg
回复 @_yg : 第二种的实现方式,简单版教程
_yg
_yg
http://www.hyugui.com/nginxbu-shu-fu-zai-jun-heng-nginxfan-xiang-dai-li/
0
eechen
eechen

我认为第一种的性能更好,因为第二种在upstream里还多了一重Nginx和PHP-FPM的进程间通信.

upstream php_backend {
	# weight默认为1,值越大,这台server负载的权重就越大
	server 127.0.0.1:9000 weight=1; # Nginx服务器上的PHP-FPM
	server 10.8.1.20:9000 weight=2; # 服务器A上的PHP-FPM
	server 10.8.1.21:9000 weight=2; # 服务器B上的PHP-FPM
}
server {
	# 除了Nginx服务器,PHP-FPM服务器A和B上也需要有这个目录,PHP项目就部署到这里
	root /data/www/domain.com/public_html;
	location ~ \.php$ {
		try_files $uri =404;
		include fastcgi_params;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_pass php_backend; # 把PHP请求交给php_backend这个upstream来处理
		fastcgi_index index.php;
	}
}

 

欧阳止水
第一种方法我也想过,但是部署项目目录觉得有些麻烦!如果说后端就一台PHP直接NFS共享给前端Nginx,但是后端PHP有个4-5台,又要数据同步,这就麻烦了,毕竟还没学分布式文件存储!
0
乌龟壳
乌龟壳

nginx的用法并不是一成不变的。就像同样是windows服务器,你把一台高负载的数据库服务器同时作为反向代理是有失偏颇的做法。

一般PHP项目都是第一种方法部署的,一台ng带多个php-fpm。这时候ng是php-fpm到http的协议转换+负载均衡+静态文件服务器+缓存等。功能很多。

如果负载再大,可能要在nginx前面再顶一层nginx,专门做负载均衡其他都不做。

乌龟壳
乌龟壳
回复 @欧阳止水 : 甚至js文件放北京,首页放上海,后台放南京,图片放杭州,用户上传文件放深圳,其他比如详情页放美国,整个网站都能跑起来。你对网站的细节了解得不多,建议不要一口吃个大胖子,先一台服务器,一个ng带一个fpm,同时ng做静态文件服务器。等你弄熟了,再研究静态资源怎么分出来,fpm怎么做集群。nginx怎么嵌套架构,域名CDN怎么适应网站的高流量。
乌龟壳
乌龟壳
回复 @欧阳止水 : 建议单台服务器就好了,搞太多自己不熟悉的容易出幺蛾子。鉴于你没啥经验,笼统跟你说,对于这种网络通信程序,没有什么是不可能的,文件放北京,php-fpm放美国,整个网站都能跑起来,你提的问题根本不是事儿。
乌龟壳
乌龟壳
回复 @欧阳止水 : 首先,从你提的问题来看,你的规模还上不到集群级别,不建议你研究这些。
欧阳止水
如果后端部署多台php-fpm服务器,那么这几台php-fpm文件存储如何保持同步?要是按照第一种方法,如何把后端php-fpm里的项目部署到前端nginx?前端nginx没有后端php-fpm里的文件,会提示找不到文件!
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部