网络基础之Nginx

Nginx不但可以作为web服务器,也可以用作正向代理与反向代理,以及透明代理。其中,反向代理,可以把局域网的web服务通过有公网ip地址的服务器发布出去,避免了ISP封锁家庭宽带80、443端口的尴尬。

一、Nginx基本操作

在CentOS上:

yum install nginx #安装Nginx

vi /etc/nginx/nginx.conf #修改nginx配置文件

nginx -t #测试nginx配置文件

systemctl start nginx #启动Nginx

nginx -s reload #重启nginx,注意,不是reboot

systemctl enable nginx.service #设置开机启动nginx,提示:Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
关于centos开机启动服务的内容,需要学习总结一下!

二、Nginx 配置虚拟主机(多个域名多个站)

nginx配置文件在/etc/nginx/nginx.conf,有一行“include /etc/nginx/conf.d/*.conf;”,表示/etc/nginx/conf.d/下的conf文件也是nginx配置文件。

参考:
Nginx 配置虚拟主机(多个域名多个站)
使用 Nginx 为 Linux 实例绑定多个域名
nginx如何添加多个虚拟主机配置

三、Nginx代理功能

正向代理与反向代理 #可以理解为正向代理服务端不知道客户端是谁,反向代理客户端不知道服务端是谁

1、正向代理:

比如VPS能访问google,通过访问在VPS上的Nginx正向代理服务,就可以访问google了,所以有人说,正向代理有些类似代购。通过正向代理,可以突破公司上网限制。

2、反向代理:

类似到超市买东西,不需要关心商品的来源。通过反向代理,可以发布局域网内的web服务。
ssh+nginx反向代理访问内网Web Service
使用反向代理(Nginx)和隧道转发(SSH)实现内网端口映射
CentOS 7 没有安装ifconfig命令、lsof命令
【SSH 内网穿透 + NGINX 反向代理】搭建微信本地开发环境
Vps上使用nginx反向代理某些你懂的网站
增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击
3、透明代理:

四、通过反向代理,发布局域网内的网站

比如:外部访问是https,内部访问是http

1、VPS的CentOS上安装nginx,更改防火墙设置

yum install nginx

netstat -ntpl #查看目前开放的端口,(缺省只开了22与25),如果没有netstat或ifconfig命令,可以通过命令“yum install net-tools”安装

#firewall-cmd –permanent –zone=public –add-port=80/tcp –permanent#添加80端口,注意是双短横符号,80可以被http替代

#firewall-cmd –permanent –zone=public –add-port=443/tcp –permanent#添加443端口,注意是双短横符号,443可以被https替代

firewall-cmd –reload # 重启防火墙,使改变生效

经过以上简单步骤,VPS上的web服务就跑起来了,将VPS绑定域名,比如“zhangqihui.cc”,就可以通过网址访问了
http://www.zhangqihui.com #通过查看nginx配置文件,主页文件在/usr/share/nginx/html目录中
VULTR的VPS在CENTOS 7.3的操作系统中出现网站无法访问 80端口被FIREWALL禁止
Centos7下防火墙开启 80 443 端口

2、实现VPS上的https服务/待补充

因为配置ss-go中安装了BBR,最后的可选步骤:How to Deploy Google BBR on CentOS 7,安装了httpd进行测速
目前注意变成httpd的了,httpd会与nginx冲突:

apachectl stop #停止httpd服务,参考:Starting and Stopping httpd
重启nginx,主页就恢复到nginx的主页了,如果配置了多个域名,可以通过不同域名访问不同的nginx虚拟主机。
nginx -t

nginx -s reload #?

www.zhangqihui.mobi #我打算跑blog的主页

www.zhangqihui.cc #nginx缺省主页

curl 127.0.0.1 #curl命令是干啥的?
3、通过VPS上的反向代理,实现被封锁80端口内网的web服务

在笔记本上搭建python一行代码的web网站(以下内容实现了通过更改http80端口对外发布web服务)

python -m http.server –cgi 8000 #其实缺省的端口就是8000
路由器梅林固件界面WAN设置端口转发,将笔记本的8000端口转发出去(通信协议tcp,内外都填8000端口,ip地址是笔记本内网地址),外网测试ok

http://www.zhangqihui.me:8000 #域名已指向家庭宽带的公网ip

4、设置VPS上的nginx,将那个讨厌的端口号“8000”去除掉

本地:

ssh -NfR 12345:127.0.0.1:8000 root@zhangqihui.cc #如何在服务器端查看这个ssh通道,如何取消这个ssh通道呢?

ssh root@zhangqihui.cc #登录服务器端
服务器端:
yum install nginx

yum install lsof

lsof -i tcp:12345

vi /etc/nginx/nginx.conf

vi /etc/ssh/sshd_config #把“GatewayPorts”设置为“yes”,sshd介绍
nginx.conf增加如下内容:
server {

listen 80;

server_name zhangqihui.cc;

location / {

proxy_pass http://127.0.0.1:12345;

}

}
重启nginx和sshd

http://www.zhangqihui.me

=============以下是待补充的知识=============================

搭建ss的BBR优化步骤,最后通过httpd进行测速,httpd如何与nginx共存?
CentOS配置Vultr私有网络,实现内网通信