热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在阿里云、微软WindowsAzure、亚马逊AWS上使用Nginx配置http正向代理服务器

作为一个完全的Linux和Nginx双料白痴,我觉得有必要把这几天的折腾整理一下,以备以后查看。首先我接到的是5台安装好Linux的云主机,两台阿里云,两台Azure和一台AW

作为一个完全的Linux和Nginx双料白痴,我觉得有必要把这几天的折腾整理一下,以备以后查看。

首先我接到的是5台安装好Linux的云主机,两台阿里云,两台Azure和一台AWS。(包括云主机IP,主机名,用户名和密码)

我要做的事情:

第一步:登录云主机。

网上查很多人推荐使用Putty,这里我们老大推荐我是使用X Manager Enterprise 4。

安装好以后打开

技术分享

运行xshell,建立一个新连接。点击菜单栏File中的“New”,打开新建会话窗口,在窗口右侧“Name”中填入”主机名“,“Host”中填入“云主机IP”,其他保持默认,点击“OK”。

技术分享

点击OK后会弹出如下窗体,并多出一个选项(红框中)

技术分享

双击上图红框中的新增项弹出

技术分享

输入用户名,为了方便下次直接进入,选上记住用户名复选框。点击OK。窗体消失。选择File—Open弹出以下窗体

技术分享

双击刚才的新增项,弹出以下窗体

技术分享

填入密码,选择记住密码,点击OK。登录成功。

技术分享

说明:登录云主机有两种方式,一个是上面说的用户名密码方式,另一种是公钥,私钥的方式。为了方便运维的同学帮我将这5太云主机的远程登录方式都改成了用户名密码方式。如果选择公钥私钥方式,是没有办法输入密码的。

第二步:查看当前Linux版本信息。

因为本小白从网上查得配置nginx大多是基于某一版本的Linux的,所以我就想了解下本与主机的Linux版本。

使用命令:lsb——release -a

技术分享

我这里安装的是CenOS 6.5。据说CenOS也是服务器端使用的最多的Linux版本。

第三步:安装Nginx。

Nginx的安装方式有编译安装,yum安装等,这里我们老大要求使用yum安装的方式。

首先需要检查一下,云主机里有没有Nginx安装文件。

命令:yum list | grep nginx

技术分享

如上图所示,我的cenos 里是有nginx安装包的(因为我已经安装完了,不可能没有啊,哈哈)

说明:经查找 ,我的的两台阿里云里有nginx安装包,Azure和AWS中没有,不知道阿里云中的是不是运维同学帮忙下好的。而且有的安装教程上第一步是yum update,yum uodate的作用是升级现有的软件和内核。可以不升级,AWS上的Linux版本跟其他4台不一样是Red Hat6.6,我不确定是不是运行了yum update造成的。

如果主机中有nginx安装文件,运行命令:yum install nginx


如果主机中没有nginx安装文件,运行命令:yum install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

安装完成后运行:service nginx start 会显示[OK]的字样。


最后在浏览器输出ip 测试一下,如果出现nginx 的欢迎页面,代表已经成功了。

如果不成功,运行sudo nginx -t 查看配置文件是否有错,如没错会出现:
技术分享

说明:这一命令需要root权限才能正确执行,所以前面加sudo 点击回车后会提示输入密码,重新输入密码即可。

如果配置文件有问题,怎根据提示修改配置文件,或者查看错误日志。不过一般情况下新安装的nginx配置文件没有修改过,不会有问题,只有修改过的才可能出错。

(CenOS6.5下安装的nginx默认主配置文件的路径是: sudo vi /etc/nginx/nginx.conf sudo是以root权限运行 vi是编辑器,后面我会介绍用到的vi中的几个命令。)
既然配置文件基本不会出错,如果看不到欢迎界面的话,有可能是防火墙的问题。
关闭防火墙 命令:sudo service iptables stop

至此,Nginx已经全部配置安装完成。

第四步:配置Nginx http正向代理

首先找到主配置文件,上文中提到过 sudo vi /etc/nginx/nginx.conf
技术分享
这是用vi编辑器打开,点“i”进入编辑状态,否则看不全,一直下拉会找到红框中的文件路径,这个路径下的文件就是我们要配置的文件。
复制路径/etc/nginx/conf.d/ 退出编辑器。下面我说一下这里用到的几个vi编辑器中命令。
1、i --进入编辑状态
2、Esc --退出编辑状态
3、:q --在没有修改的情况下退出vi
4、:q! --修改了,但是不想保存,强行退出
5、:wq --修改了,保存并退出

现在我们要找到的是修改的文件 命令: 
1、cd /etc/nginx/conf.d/ --进入conf.d文件夹
2、ls -lsh --ls是查看文件夹下的所有文件, -lsh是显示文件属性 并按照时间排序。这里可以只用 ls
技术分享
3、我们要修改的是default.conf 进入这个文件的编辑状态:sudo vi default.conf
技术分享
4、点i进入编辑状态(一下内容部分引自网络)
一,Nginx 正向代理配置文件:
server {
    resolver 8.8.8.8;
    resolver_timeout 5s;
    listen 8090;
    location / {
        proxy_pass $scheme://$host$request_uri;
        proxy_set_header Host $http_host;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout 30;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
    }
}
二,Nginx 正向代理配置说明(以上没有显示内容,注释掉即可):
1,配置 DNS 解析 IP 地址,比如 Google Public DNS,以及超时时间(5秒)。
resolver 这里你要改成你们DNS服务器的IP (查看dns的命令:cat /etc/resolv.conf);
resolver_timeout 5s;
说明:如果自己dns服务器对应的ip不止一个,网上的解决方案是两个ip并排,用空格分开,如resolver 8.8.8.8  9.9.9.9; 但是我试过是不行的,现在我只绑定了一个IP,如果谁有解决办法,希望能得到您的指点。
对于listen 8090; 这个是端口是自己制定的,阿里云我用的是80 ,微软云和aws我用的是8090.值得一提的是阿里云这些端口是默认开放的,而微软与和AWS默认只开放了22端口,如果用到其他的端口,需要请运维帮忙开通。

2,配置正向代理参数,均是由 Nginx 变量组成。其中 proxy_set_header 部分的配置,是为了解决如果 URL 中带 "."(点)后 Nginx 503 错误。

proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;
3,配置缓存大小,关闭磁盘缓存读写减少I/O,以及代理连接超时时间。

proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
4,配置代理服务器 Http 状态缓存时间。

proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
三,不支持代理 Https 网站
因为 Nginx 不支持 CONNECT,所以无法正向代理 Https 网站(网上银行,Gmail)。
如果访问 Https 网站,比如:https://www.google.com,Nginx access.log 日志如下:

"CONNECT www.google.com:443 HTTP/1.1" 400


第五步:添加nginx身份验证

身份验证一般有两种方式,一种是使用ssl 443即证书的方式,另一种是使用htpasswd的方式,这里为了方便我选择后者。

最后的效果就类似(不同浏览器的界面有所不同):

技术分享

如果认证失败,就会报HTTP错误:401 Authorization Required。

要实现这样的功能,就需要更改服务器的配置,并设定好用于登录的用户名和密码。

首先我们需要更改网站的Nginx的server配置,我们找到刚才配置正向代理的那个配置文件,在lication中添加两行如下:

cd /etc/nginx/conf.d/
sudo vi default.conf
server {
# ...
location / {
# 添加下面两行
auth_basic "Restricted"; (Restricted为出错后的提示语)
auth_basic_user_file  proxy.pwd; (proxy.pwd是秘钥文件的文件名,这里应为秘钥文件的完整路径,如下图)
# ...
}
# ...
}
技术分享

接下来需要创建htpasswd文件,这里有一些细节需要注意:

htpasswd的路径
和nginx.conf在同一级目录即可。CentOS服务器的话一般就在/etc/nginx/下面。

htpasswd的内容
每一行为一个用户,格式为username:password。但是要注意,这里的password不是明文,而是将password进行crypt(3)加密后的字符串。

你可以使用一段PHP代码来生成htpasswd中的password: 也可以使用网上的现在生成工具(不推荐),我的文件是老大直接给我的Python生成的。
// 密码明文
$password = ‘some password‘;
// 对密码进行加密
$password = crypt($password, base64_encode($password));
// 获得加密后的密码
echo $password;

然后将字符串写入htpasswd文件中:


username1:xucqMk13TfooE
username2:YXTfb3xWKOMBM
...


htpasswd的权限

需要更改htpasswd文件的权限,执行如下命令: 

sudo chown root:www-data htpasswd
sudo chmod 640 htpasswd 


当上面的准备工作都做好之后,我们就可以重新载入或者重启Nginx服务器了: 

sudo /etc/init.d/nginx reload 

说明:密码文件导入的方法有很多,可以通过Xmanager Enterprise 4中的Xftp,还可以使用pscp.exe,如果倒不进去的话还有最原始的办法,在/etc/nginx/ 下新建文件proxy.pwd 然后将秘钥中的文本考进去即可。













在阿里云、微软Windows Azure、亚马逊AWS 上使用Nginx配置http正向代理服务器


推荐阅读
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • ### 摘要`mkdir` 命令用于在指定位置创建新的目录。其基本格式为 `mkdir [选项] 目录名称`。通过该命令,用户可以在文件系统中创建一个或多个以指定名称命名的文件夹。执行此操作的用户需要具备相应的权限。此外,`mkdir` 还支持多种选项,如 `-p` 用于递归创建多级目录,确保路径中的所有层级都存在。掌握这些基本用法和选项,有助于提高在 Linux 系统中的文件管理效率。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 在 Mac 上查看隐藏文件和文件夹的详细指南。通过终端命令,您可以轻松地显示或隐藏这些文件。具体步骤如下:输入 `defaults write com.apple.finder AppleShowAllFiles -bool true` 以显示所有隐藏文件,或使用 `defaults write com.apple.finder AppleShowAllFiles -bool false` 以重新隐藏它们。此方法适用于各种版本的 macOS,帮助用户更好地管理和访问系统文件。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 如何在Linux系统中实现Windows风格的桌面环境:将Ubuntu 18.04定制为Windows主题界面
    如果您是从Windows转到Linux系统的用户,可能会觉得默认的Ubuntu主题和桌面环境缺乏吸引力和可定制性。尤其是对于习惯了Windows风格的任务栏和主题的用户,Ubuntu 18.04的橙色主题可能显得过于简洁。为了提升用户体验,可以通过安装特定的桌面环境和主题来实现类似Windows的界面效果。本文将详细介绍如何在Ubuntu 18.04中配置和定制桌面环境,使其具备Windows风格的外观和功能。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • MongoVUE基础操作指南:轻松上手数据库管理
    本文介绍了MongoVUE的基础操作,旨在帮助用户轻松掌握数据库管理技巧。MongoVUE是一款功能强大的MongoDB客户端工具,虽然需要注册,但其用户友好的界面和丰富的功能使其成为许多开发者的首选。文中详细解释了安装步骤、基本配置以及常见操作方法,并对一些常见的问题进行了修正和补充,确保用户能够快速上手并高效使用MongoVUE进行数据库管理。 ... [详细]
author-avatar
m71051588
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有