首页 > 编程知识 正文

nginx反向代理配置upstream,nginx反向代理配置详解

时间:2023-05-05 08:05:56 阅读:282808 作者:2417

nginx的安装

安装编译nginx的依赖包

# yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel

解压nginx-1.6.2.tar.gz

# tar zxf nginx-1.6.2.tar.gz

编译安装nginx

# cd nginx-1.6.2

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

# make

# make install  (如果不想执行覆盖安装,可以在make命令执行后,备份原有安装好的nginx: # cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak, 然后再将nginx-1.6.2目录下刚编译好的nginx覆盖掉原有的nginx: #cp ./objs/nginx /usr/local/nginx/sbin/)

启动nginx

 

nginx启动方式

方式一:

不指定启动配置文件,默认启动nginx.conf配置文件: # /usr/local/nginx/sbin/nginx

方式二:

指定启动配置文件,例如启动nginx_kibana.conf配置文件:

# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx_kibana.conf

查看nginx拥有的模块

 

启动后,可查看nginx拥有的模块:

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

反向代理配置

http反向代理

只需要修改修改配置文件即可。可以直接修改/usr/local/nginx/conf/nginx.conf文件,也可以在/usr/local/nginx/conf/目录下编辑新的.conf文件。无论是哪种方式,都只需要在配置文件里面添加如下命令即可:

 

例如配置kibana的http反向代理:

server {

listen       5602;

server_name  192.168.9.122;

location / {

proxy_pass http://192.168.9.122:5601;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection 'upgrade';

proxy_set_header Host $host;

proxy_cache_bypass $http_upgrade;

}

}

https反向代理

 

https证书

nginx的https反向代理,需要证书

如果没有证书,可以运行以下命令生成一个证书,和一个解密的key文件。(该命令生成的证书不会被浏览器认证,如果需要一个被浏览器认证的证书,需要通过证书机构申请)

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /opt/ssl/private/nginx-selfsigned.key -out /opt/ssl/certs/nginx-selfsigned.crt

备注:/opt/ssl/private/nginx-selfsigned.key   /opt/ssl/private为解密key文件的存放路径,nginx-selfsigned.key为key文件的名称。opt/ssl/certs/nginx-selfsigned.crt  opt/ssl/certs为证书crt文件的存放路径,nginx-selfsigned.crt为证书文件的名称。这些参数都可以根据自己的情况进行修改

如果已经有证书,可以运行以下命令来生成一个解密的key文件

# openssl rsa -in server.key -out server.key.unsecure

备注:server.key为证书秘钥文件,根据自己的秘钥文件名称进行修改

配置nginx的conf文件

 

 

可以直接修改/usr/local/nginx/conf/nginx.conf文件,也可以在/usr/local/nginx/conf/目录下编辑新的.conf文件。无论是哪种方式,都只需要在配置文件里面添加如下命令即可:

例如配置kibana的https反向代理

server {

listen       5602 ssl;

server_name  192.168.9.122;

ssl             on;

ssl_certificate      /opt/ssl/certs/nginx-selfsigned.crt;

ssl_certificate_key  /opt/ssl/private/nginx-selfsigned.key;

ssl_session_timeout  5m;

ssl_ciphers  HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers  on;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

location / {

proxy_pass http://192.168.9.122:5601;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection 'upgrade';

proxy_set_header Host $host;

proxy_cache_bypass $http_upgrade;

}

}

 

注释:

ssl             on;  控制ssl协议是否启动,on为启动,off为不启用

ssl_session_timeout  5m;

ssl_ciphers  HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers  on;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

上面绿色字体的几个参数为nginx SSL的性能调优参数

nginx身份认证

先安装Apache Httpd密码生成工具

# yum install httpd-tools -y

 

 

 

生成认证密码

# htpasswd -c /usr/local/nginx/conf/htpasswd admin

备注:/usr/local/nginx/conf 为认证密码文件的存放路径,htpasswd为认证密码文件,admin为认证的用户名。 这些参数都可以根据自己的情况进行修改

运行命令后,根据提示输入要设置的密码即可

 

配置nginx参数

想要认证密码生效,如要上面的配置文件中添加如下参数:

auth_basic "Restricted Access";

auth_basic_user_file /usr/local/nginx/htpasswd;

备注:/usr/local/nginx/htpasswd 为上面生成密码文件的路径

例如:

server {

listen       5602 ssl;

server_name  192.168.9.122;

ssl             on;

ssl_certificate      /opt/ssl/certs/nginx-selfsigned.crt;

ssl_certificate_key  /opt/ssl/private/nginx-selfsigned.key;

ssl_session_timeout  5m;

ssl_ciphers  HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers  on;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

auth_basic "Restricted Access";

auth_basic_user_file /usr/local/nginx/htpasswd;

location / {

proxy_pass http://192.168.9.122:5601;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection 'upgrade';

proxy_set_header Host $host;

proxy_cache_bypass $http_upgrade;

}

}

启动反向代理

配置文件后,只需要重启对应的nginx服务即可。 为了安全起见,防火墙可以关闭原程序端口,只需要开放反向代理端口。例如kibana的5601端口是http服务的,不是很安全,启动nginx反向代理后,可关闭5601端口。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。