本文的主要目的是:如何通过nginx反向代理监听4000端口,使直接访问网站而非端口。比如hexo,通过hexo server来启动服务后,是通过http://127.0.0.1:4000来监听实现的,这是不能直接绑定域名的主机空间的,现在我需要直接访问我的域名就可以访问改博客。此时就可以用到nginx反向代理。
反向绑定域名也叫做反向D理,是指用D理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时D理服务器对外就表现为一个服务器。
什么时候要用到反向绑定域名呢?反向绑定可以分流请求和负载均衡,因此它广泛用于一些大流量的网站和数据集群,降低系统负载。对于一些不能直接绑定域名的主机空间,我们可以用反向绑定域名的方法来强制绑定自己的域名。
安装nginx(下面的步骤可快速在centos上安装nginx)
安装epel仓库(install the epel repo)
1 | sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm |
安装remi仓库(Install the remi repo)
1 | sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm |
安装nginx和响应的依赖(Install nginx and dependencies)
1 | sudo yum install nginx |
启动nginx服务器(Start the nginx HTTP server)
1 | sudo /etc/init.d/nginx start |
此时启动后,可能会报以下错误:
通过netstat -ntpl
可以查看端口占用情况
中间我查了一些资料,解决办法是找到nginx目录中default.d文件(/etc/nginx/conf.d/default.d),然后修改里面的内容(vi default.d)。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29server {
listen 80;
server_name cailidan.cn,www.cailidan.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:4000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
最后再重新启动sudo /etc/init.d/nginx start
即可访问nginx。此时本需要ip:port才能访问的,就变成了ip就可以直接使用,相当于通过代理,重新处理了url.
Nginx简介:
Nginx是一个高性能的HTTP服务器和反向代理服务器, 最大的优点是节省资源,适用于处理高并发的请求。
Nginx最初是按照反向代理设计的,和Apache不同, nginx关心如何处理url,而不是文件!
Apache 是个基于进程处理的web服务器,如果同时有多个请求,必须要启动多个进程来处理。 这样在高负载的情况下,资源的消耗和响应的速度都会有很大的问题。 而Nginx是个基于事件(event)的异步处理模式
- 但是Nginx也有劣势,虽然在静态的反向方面Nginx表现优秀,但是在处理PHP动态请求方面不如Apache,并且在操作使用方面不如Apache方便,例如Wordpress一些插件就只能在Apache上起作用。Nginx一个最常见的问题出现访问502错误。
既使用Nginx,又使用Apache
Apache是因为其功能强大而出名的,而Nginx是因为其响应速度快而著称的。这就意味着Nginx在静态内容的服务上要相对快些,不过,Apache可以使用模块来运行后台应用服务器,而且还可以运行脚本语言。
Apache和Nginx都可以用作代理服务器,不过通常我们会把Nginx用作代理服务器,而把Apache用作后台服务器。Nginx包含了 先进的负载均衡和内容缓冲功能。当然,Apache服务器的部署数量巨大。为了充分发挥Apache服务器的效能,就需要有负载均衡器。Apache可以使用自身所包含负载均衡模块,另外,还可以使用基于硬件的负载均衡器。
另一种使用方法是给Nginx配置独立的 php-fpm应用,我们认为 php-fpm是一个应用,这是因为它不是执行期间可以装载的.dll或者.so,而是与Apache的模块使用方法相同。Ngnix使用php-fpm(FastCGI进程管理器)来处理php脚本,这就使得Nginx具有生成非静态内容的功能。
我尚未解决的问题
心痛,因为以前没有用过nginx,以前也只是听说过,这次也不是专门想学这个,只是想把网站不要通过端口访问,查到可以用nginx比较方便才去简单的了解了一下。但是发现虽然我想要的效果达到了,以前的apach和现在的nginx却有点冲突了。查到可以通过nginx来处理前端的资源,同时可以用apache做后台服务器处理后台php文件。这样可以充分利用两个的优点。但是必须通过更改nginx的配置才可以。相当于由原来的LAMP到了LNAMP。待我弄清楚了这个到底怎么配置,回头再来写一篇记录下来。