preface
之前的文章中已经介绍了 Linux 环境下配置 LNMP,可以自己搭建网站了。鸽了很久的 nginx 反向代理教程到现在才写,因为配置在虚拟机里,最近才有空去打开哈哈哈。nginx 反向代理目前我用的最多的情况就是隐藏端口号,我的一台机器上可能同时运行着很多个 web 服务,但是 80 端口只有一个,就不能将所有的服务全都绑定到 80 端口,这样的话就很麻烦,一个是要记住服务器的 ip,一个是要记住每一个服务的端口号,以ip:port
的形式在浏览器访问。但是有了 nginx 的话,再也不用这么麻烦了,只需要购买一个域名就行了。
怎么搞
比如现在我的服务器上用 python 开了一个简单的 HTTPServer,默认是在 8000 端口,要访问的话就得在浏览器输入以下地址:
192.168.120.128:8000
现在我在 nginx 的 /etc/nginx/sites-enabled
目录下新增加一个 conf 配置文件,叫做 py.conf
,写下以下内容,并且在域名提供商处新增加一个二级域名指向当前服务器 ip 地址。
server{
listen 80;
server_name server.szukevin.site;
location / {
proxy_pass http://127.0.0.1:8000/;
}
}
这个其实挺好理解的,觉得陌生的话可以看看我之前写的关于 nginx 的文章,也就是说,server.szukevin.site
这个域名监听着服务器上的 80 端口,如果访问了 /
根目录的话,就将请求转发到本地的 8000 端口,这也就实现了反向代理的功能,即外界并不知道服务器真实的端口是哪一个,只需输入域名就可以访问到服务器
其他例子
再来举一个 php 网站的例子,同样在 /etc/nginx/sites-enabled
目录下新增加一个 conf 配置文件,叫做 sql-lab.conf
,写入以下内容,其实第二个 server 就是之前我们第一次配置这个网站的时候添加的内容,也就是已经配置号了一个动态网站,在 8889 端口上运行。然后上面一个 server 用一个域名绑定了 80 端口,如果输入域名的话就将请求转发到 8889 端口上,达到了访问网站的目的。
server{
listen 80;
server_name sqli.szukevin.site;
location / {
proxy_pass http://127.0.0.1:8889/;
}
}
server {
listen 8889;
listen [::]:8889;
server_name localhost;
root /var/www/sqli-labs-php7;
index index.html index.php;
location ~ [^/]\.php(/|$)
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
当然,这还是比较基础 nginx 知识,其实 nginx 能做的东西可多了,我也只选择了我日常需要用到的一些东西来学习,就拿反向代理来说,首先得学会反向代理的原理,然后最重要的,拥有一个自己的域名!