我们用apt安装的配置文件默认在/etc/nginx目录下,打开这个目录然后双击打开nginx.conf文件,可以看到大部分http block内容在默认的已经写好了,所以不需要修改,如果需要修改的话可以找AI要相关内容,让他解释一下注释掉的部分是什么意思。当然从配置文件规范性的角度来说,我们应该把我们的block写在默认配置文件第60、61行提到的两个路径里,但是服务不是很多,所以没必要这么做。
下面是一个块的大致结构,端口号可以从1-65535中选择,但是我们的宽带公网上80和443默认是关闭的,其他的比如8080也有可能关闭。另外我们的ssh服务也占用了一个端口,但是可选的还是比较多的。至于公网上开放的端口,越隐蔽越好,不容易被扫描到。#所在的注释行可以删除,我只想告诉大家下面这几行是什么意思,我们还是建议在公网上使用SSL加密,一方面是为了你通讯的安全,另一方面万一DNS被劫持了也可以查到。SSL协议版本这里就不再声明了,因为在http块中已经声明过了,如果你自己编译安装过Nginx的话,可以查看http块中是否有对应的语句。 下面这个作为例子的块的意思是,当公网使用域名:33456 使用 HTTPS 协议访问你 Nginx 主机的 33456 端口时,后台真正交互的服务是 192.168.1.101:8096 上的服务。如果服务比较多,只需要复制整个块,根据需要进行修改即可。
server{
#监听33456端口并启用ssl,如果不要ssl就不加ssl,上面是IPv4,下面方括号的是IPv6
listen 33456 ssl;
:]:33456 ssl; :
#server_name就是你的域名,自行修改
server_name www.example.site;
#两个ssl文件的存放路径,就是我们上一篇申请ssl证书之后下载的crt文件和key文件,注意文件名
ssl_certificate /etc/ssl/example.site.crt;
ssl_certificate_key /etc/ssl/example.site.key;
#以下是location块,除了wordpress这种建站工具的访问需要php动态或者伪动态处理之外,其他的我们一律就静态就OK
location / {
#下面j就是你局域网服务的访问地址和端口号
//192.168.1.101:8096; :
#client_max_body_size 3000m;#如果说有的服务需要单次传输大文件,就把这行注释取消了
}
# 部分要用到websocket才能正常登录的服务,比如HomeAssitant需要加入websocket单独的代理
# location /api/websocket {
# proxy_pass http://192.168.1.101:8096/api/websocket;
# proxy_set_header Host $host;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
# }
}
如果你的服务本身没有密码保护,可以使用命令创建一个密码文件,然后访问时需要进行身份验证,需要先安装-utils,命令如下:
-c 是用来创建密码文件的,如果已经创建了密码文件,后面添加用户就不用写-c了。-b 是直接在命令行输入密码,不用等待提示符,是可选的。我们还是把密码文件放在Nginx配置目录下,设置为隐藏文件。
apt install apache2-utils
htpasswd -cb /etc/nginx/.htpasswd 你的用户名 你的密码
然后我们需要稍微修改一下上面的Nginx配置文件中的那块,请输入你的账号和密码,那里面有一个提示词,可以随意修改。
location / {
proxy_pass http://192.168.1.101:8096;
auth_basic "请输入账号密码";
auth_basic_user_file /etc/nginx/.htpasswd;
}
但是我用的edge好像不能显示那行提示,如图
当然不是所有的服务都在http的应用层,有些服务需要经过TCP/UDP的传输层,比如后面提到的远程控制中继服务器,这时候就需要用到block了。block不能通过域名来区分,所有到这个端口的流量都会转发到你指定的后台端口上。它的配置文件的模式如下,包括两个block和,可以根据需要增加。需要注意的是block是独立的,所以不要把它们写到http的block中。
stream {
#后台服务1,server1这个名字可以按你喜欢的改,里面的就是你服务的IP和端口号
upstream server1{
server 192.168.1.111:3724;
}
server{
# 监听端口,同样还是有中括号的是IPv6,没有的是IPv4;什么都不写就是TCP,如果是UDP需要在端口号后空格加上
listen [::]:23880;
listen 23880;
# 后端服务设置,需要注意proxy_pass要在上面的upstream块中有写
proxy_pass server1;
proxy_timeout 1s;
proxy_responses 1;
error_log logs/dns.log;
}
设置完成后按左上角的保存,然后我们运行Nginx测试命令看看配置文件是否有问题
nginx -t
如果没有问题的话,他就会把这个东西退还。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
这时候我们就可以重启我们的Nginx服务了
nginx -s reload
这样就完成了Nginx的配置,并且开启了它的转发功能,这样我们在公网上只有一台有域名的机器,但是在我们自己的局域网内却也可以轻松访问到我们所需要的服务。
补充:防火墙
PVE自带防火墙,在网页上也可以设置,需要把数据中心级别以下的节点和虚拟机都打开才会生效。但是不管是设置数据中心级别还是虚拟机的出入口,都会导致突然出现bug,什么都进不去。所以这里实在写不出稳定的教程,如果要用的话只能请大家自己动手了。当然我们可以直接在我们的lxc容器里开启防火墙,比如用完然后配置一下,只开放我们上面用到的端口的对外访问。当然每次我们要增加新的端口的时候,都需要设置防火墙,作为一个建议,肯定是建议开启防火墙的,毕竟是在公网上,不过说实话我还没碰到过被扫描或者从其他没有开启的端口攻击的情况。
下一篇文章我们将开始进入All in One大部分功能的部署阶段。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。