Nginx配置作为中转服务器

一曲冷凌霜 提交于 2019-12-23 20:49:23

最近项目因为网络原因需要有一台服务器作为中转机,跳转到互联网上,所以需要配置nginx作为代理使用。

1、首先使用命令安装必要的组件

yum install wget

yum install vim-enhanced

yum install make cmake gcc gcc-c++

2、下载nginx安装包

wget http://nginx.org/download/nginx-1.6.2.tar.gz

3、安装依赖,其中pcre(perl compatible regular expressions)是一个pert库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。pcre-devel是使用pcre开发的一个二次库,nginx也需要此库。zlib库提供了很多种压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。openssl是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的秘钥和证书封装管理功能及SSL协议,并提供丰富的应用程序提供测试或其它目的的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

 

yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

4、解压nginx-1.6.2.tar.gz

 tar -zxvf nginx-1.6.2.tar.gz 

 5、进入到目录下,可以看到我们解压后的nginx-1.6.2文件夹了,然后我们进行configure配置,命令:cd nginx-1.6.2 && ./configure --prefix=/home/zqxy/nginx。可以看出,这条命令是组合命令,先进入nginx-1.6.2目录然后在执行./configure命令。如下图所示。

make && make install

 

 6、启动Nginx,启动完之后检查nginx是否已经正常启动,看到如下信息说明正常启动

/home/zqxy/nginx/sbin/nginx

ps -ef | grep nginx

 

  如果要关闭nginx,我们可以使用如下命令:

 

/home/zqxy/nginx/sbin/nginx -s stop

通过浏览器访问nginx欢迎页,我们在地址栏输入:http://XXX.XXX.XX.XX/(80端口不用输也可以)或http://XXX.XXX.XX.XX:80/,如下图所示。

至此 我们安装好了NGINX服务

由于要代理的接口未https的接口 所以需要添加ssl模块

 

开始Nginx的SSL模块

1.1 Nginx如果未开启SSL模块,配置Https时提示错误

原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/nginx-1.6.2目录

1

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37

1.2 Nginx开启SSL模块

切换到源码包:

1

cd /usr/local/src/nginx-1.11.3

查看nginx原有的模块

1

/usr/local/nginx/sbin/nginx -V

在configure arguments:后面显示的原有的configure参数如下:

1

--prefix=/usr/local/nginx --with-http_stub_status_module

那么我们的新配置信息就应该这样写:

1

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

运行上面的命令即可,等配置完

配置完成后,运行命令

1

make

这里不要进行make install,否则就是覆盖安装

然后备份原有已安装好的nginx

1

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)

1

cp ./objs/nginx /usr/local/nginx/sbin/

然后启动nginx,仍可以通过命令查看是否已经加入成功

1

/usr/local/nginx/sbin/nginx -V 

 

创建配置证书目录


 
  1. # mkdir ssl

  2. # cd ssl

1.生成私钥


 
  1. openssl genrsa -des3 -out cert.key 1024 #生成1024的证书私钥

  2. Generating RSA private key, 1024 bit long modulus

  3. ............++++++

  4. ......................++++++

  5. e is 65537 (0x10001)

  6. Enter pass phrase for cert.key: #提示输入密码

  7. Verifying - Enter pass phrase for cert.key: #确认密码

linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

2.创建证书请求


 
  1. # openssl req -new -key cert.key -out cert.csr

  2. Enter pass phrase for cert.key: #输入密码

  3. You are about to be asked to enter information that will be incorporated

  4. into your certificate request.

  5. What you are about to enter is what is called a Distinguished Name or a DN.

  6. There are quite a few fields but you can leave some blank

  7. For some fields there will be a default value,

  8. If you enter '.', the field will be left blank.

  9. -----

  10. Country Name (2 letter code) [AU]:cn #国家

  11. State or Province Name (full name) [Some-State]:shanghai #省份

  12. Locality Name (eg, city) []:shanghai #地区名字

  13. Organization Name (eg, company) [Internet Widgits Pty Ltd]:westos #公司名

  14. Organizational Unit Name (eg, section) []:linux #部门

  15. Common Name (e.g. server FQDN or YOUR name) []:server #CA主机名

  16. Email Address []:root@server #邮箱

  17.  
  18. Please enter the following 'extra' attributes

  19. to be sent with your certificate request

  20. A challenge password []:123456 #证书请求密钥,CA读取证书的时候需要输入密码

  21. An optional company name []:123456 #公司名称,CA读取证书的时候需要输入名称

linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

# cp cert.key cert.key.bak

 
  1. # openssl rsa -in cert.key.bak -out cert.key

  2. Enter pass phrase for cert.key.bak: #输入密码

  3. writing RSA key

linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

3.自签署证书

·```
#openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.pem
 

  1. # ll

  2. total 16

  3. -rw-r--r-- 1 root root 749 Oct 25 15:33 cert.csr

  4. -rw-r--r-- 1 root root 891 Oct 25 16:13 cert.key

  5. -rw-r--r-- 1 root root 963 Oct 25 16:12 cert.key.bak

  6. -rw-r--r-- 1 root root 920 Oct 25 16:16 cert.pem

linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

4.将证书导出成浏览器支持的p12


 
  1. # openssl pkcs12 -export -clcerts -in cert.pem -inkey cert.key -out cert.p12

  2. Enter Export Password:

  3. Verifying - Enter Export Password:

  4. [root@localhost ssl]# ls

  5. cert.csr cert.key cert.key.bak cert.p12 cert.pem

linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

5.p12文件中导出公钥和私钥

生成cert.key文件

openssl pkcs12 -in cert.p12 -nocerts -nodes -out cert.key

导出公钥


 
  1. # openssl rsa -in cert.key -out cert_pri.pem

  2. writing RSA key

linux系统自签发免费ssl证书,为nginx生成自签名ssl证书
导出私钥

# openssl rsa -in cert.key -pubout -out cert_pub.pem

下面我们对nginx参数进行配置用于代理接口服务

1、当启动过nginx之后,我们到/home/zqxy/nginx目录下,可以看到有conf、html、logs、sbin四个文件这四个文件是刚解压后就有的,是nginx重要的文件,还可以看到几个_temp结尾的文件,这些都是启动后生成的文件,我们暂且不用去管它们。我们使用cd conf命令进入conf目录,该目录下有个nginx.conf文件,这是nginx最重要的文件,我们修改nginx就是修改该文件,如下所示

 

切换到nginx配置文件

 

接下来配置conf文件

 

# cd /usr/local/nginx/conf

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!