使用nginx提供静态网页服务
前言
由于想在自己的机器上建一个博客,需要提供静态网页服务(偶尔来点动态内容)
使用的newifi mini路由器刚好使用的是padavan系统,有lnmp环境选项
就使用了nginx来提供网页服务,实际上路由器还自带了apache,但是先接触的先用吧
安装
padavan上
padavan上下载opt-lnmp包的链接失效了
需要手动从别的地方将opt-lnmp安装包的压缩文件=opt-lnmp.tgz=放在U盘并插入路由器
路由器重启自动识别U盘作为软件安装位置,并解压安装opt-lnmp
得到的lnmp环境不是最新的,使用
1 | opkg update |
进行升级
貌似opt-lnmp已经不再维护了(2017-02-18)
在openwrt上使用
1 | opkg install nginx |
以现在的知识范围来看,还用不上php和mysql,所以先不安装
设置网站的站点信息
nginx配置文件路径
/opt/etc/nginx/vhost/*.conf
- 由于padavan上使用
/opt/
文件夹存放安装的所有插件,
所以配置文件所在的/etc
文件夹也在这下面,不然一般是在根目录下
配置文件范本
1 | # Blog_real.conf |
至此已经可以使用 192.168.123.1:81
访问博客,但是使用域名仍然不行,以为默认的是80端口
若要不带端口号访问网站,可以将上述81端口改为80端口
但是
路由器一般都自带了web管理页面,占用80端口,并使用Apache提供网页服务,(有时为了性能使用uhttpd)
在浏览器访问默认的80端口似时,
nginx要提供监听后判断的内容
而Apache要提供默认设置好的管理页面
结果是Apache胜利了,每次都指向管理界面
Apache与nginx在80端口冲突的解决
nginx拥有反向代理功能
什么是反向代理先不要纠结,nginx可以作为中间人为客户端提供内容,而对中间人不透明
如果恰巧在同一个IP的同一个端口(比如这里的80端口)上访问多个网站,可以利用nginx的之一功能
即nginx作中间人,寻找不同网址,Apache提供的指向管理页面的功能很单一,就把80端口让出来,让nginx去找Apache吧
设置反向代理
由于希望使用 192.168.123.1
这样的地址访问路由器时出现的是路由器管理界面
而使用同样解析成 192.168.123.1
的域名 www.Blog.com
能够找到博客页面,
需要在web服务的默认端口80端口设置一个监听器并根据不同情况导向不同方向
-
请求博客页面时
1
2
3
4
5
6
7
8# blog.conf
server {
listen 80;
server_name www.Blog.com Blog.com Blog;
location / {
proxy_pass http://192.168.123.1:81;
}
}这里nginx指向81端口,但并不关心81端口是谁提供的
-
请求管理界面时
1
2
3
4
5
6
7
8# manage.conf
server {
listen 80;
server_name http://192.168.123.1 192.168.123.1;
location / {
proxy_pass http://192.168.123.1:8080;
}
}配置文件的前提是管理页面本身被放在了8080端口处
在openwrt中是修改/etc/config/uhttpd文件中的端口,后使用/etc/init.d/uhttpd
restart重启服务此时可以使用
192.168.123.1:8080
与192.168.123.1
访问管理页面
启动nginx
测试配置文件
1 | nginx -t |
启动服务
1 | nginx |
停止服务
1 | nginx -s stop |
重启服务
1 | nginx -s reload |
网络状况查看
1 | [RT-AC54U /]# netstat -tlnp |
可以看到nginx在80端口工作(提供中转),也在81端口工作(指向网站项目根目录)
httpd(属于Apache)工作在8080端口
访问
设置了 www.Blog.com
这样的域名,想要在本地生效,需要两步
路由器设置hosts文件
在 /etc/hosts
文件后添加一条 192.168.123.1 www.Blog.com Blog.com Blog
1 | echo '192.168.123.1 www.Blog.com Blog.com Blog' >> /etc/hosts |
一般hosts文件的改动是及时生效的
下级终端设置DNS服务器
- 不设置
- 改动过DNS设置的话要确保有一条是
192.168.123.1
访问效果
链接 | 页面 |
---|---|
192.168.123.1 | 管理页面 |
192.168.123.1:8080 | 管理页面 |
192.168.123.1:81 | 博客 |
www.Blog.com |
博客 |
Blog.com |
博客 |
Blog | 失败,可能是浏览器认为是个词,于是谷歌/百度去了 |
www.Blog.com:8080 |
管理页面,端口都指定了,听话去找 |
外部访问
路由器开启端口转发
需要在端口转发(UPnP)中设置外部端口到内部端口的映射关系,不然所有请求都被防火墙挡住
比如可以设置外部端口8001映射内部=192.168.123.1:81=等
小米路由器限制设置自身为被映射的对象,但是也能在配置文件中更改
如果网站放在二级路由器上(这次的newifi就是)
需要上级路由器转发到二级路由器
二级路由器再设置自身的转发(好在newifi并不限制转发到自身)
尝试DDNS
路由器IP地址可能不固定
需要路由器间歇地向一个DNS服务器发送自己的IP地址,然后才能用同一个域名访问不同的IP
推荐=no-ip=
注册免费,域名可以自定义,比花生壳好多了
使用效果
使用 www.xxxBlog.ddns.net:8001
访问博客
- 不带端口号? 还是使用VPS吧,那个可以在保证安全的情况下开放80端口