网络基础之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

二、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私有网络,实现内网通信

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s