Nginx-为不支持https(ssl)的web服务器提供https(ssl)服务

  • 时间:2025-10-29 01:36 作者: 来源: 阅读:4
  • 扫一扫,手机访问
摘要:Nginx介绍 nginx是一个轻量级的WEB服务器及反向代理服务器,由于目前项目服务器thttpd不支持SSL协议,所以需要通过反向代理服务器来支持SSL协议。 如何使用Nginx 环境 OS: Ubuntu16.04 WebServer: thttpd 安装 sudo apt-get install nginx 配置 cd /etc/nginx

Nginx介绍

nginx是一个轻量级的WEB服务器及反向代理服务器,由于目前项目服务器thttpd不支持SSL协议,所以需要通过反向代理服务器来支持SSL协议。

如何使用Nginx

环境

OS: Ubuntu16.04
WebServer: thttpd

安装

sudo apt-get install nginx

配置

cd /etc/nginx/conf.d
touch server-8080.conf

server-8080.conf内容如下:

server {
listen 8080 ssl; #监听8080端口
ssl_certificate /etc/nginx/conf.d/ssl/server.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl/server.key;
ssl_prefer_server_ciphers on;
keepalive_timeout 60;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

location / {
    proxy_pass http://0.0.0.0:8888/; #转发到8888端口上
    proxy_next_upstream error http_500; 
    proxy_set_header Accept-Enconding "";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;#真实ip地址保存至请求头
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#真实ip地址保存至请求头
    proxy_set_header X-Forwarded-Proto $scheme;
    add_header Front-End-Https on;
    proxy_redirect off;
  }
}

证书

ssl协议需要生成证书,配置文件的server.crt和server.key即证书。

sudo openssl req -new -x509 -days 3650 -extensions v3_ca -keyout ca.key -out ca.crt
sudo openssl genrsa -out server.key 2048
sudo openssl req -out server.csr -key server.key -new
sudo openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650

隐藏版本号

为了安全一般把服务器版本隐藏。

cd /etc/nignx
sudo vim nginx.conf

配置如下

http {
...
server_tokens off;
...
}

启动停止

sudo systemctl start|stop|status nginx

thttpd修改

由于thttpd头文件没有X-Real-IP,所以需要把X-Real-IP添加到头文件中。

下载

官网:http://www.acme.com/software/thttpd/
点击Fetch the software,下载thttpd源码。

修改内容

libhttpd.h 148行

httpd_conn结构体增加char* x_real_ip;

...
off_t first_byte_index, last_byte_index;
int keep_alive;
int should_linger;
struct stat sb;
int conn_fd;
char* file_address;
char* x_real_ip; //新增x_real_ip
} httpd_conn;

libhttpd.c 2246行
解析请求头时把X-Real-IP加上

...
else if ( strncasecmp( buf, "X-Real-IP:", 10 ) == 0 )
    {
    cp = &buf[10];
    cp += strspn( cp, " 	" );
    hc->x_real_ip = cp;
    }
...

libhttpd.c 3141行
设置环境变量把X_Real_IP加上

...    
if (hc->x_real_ip[0] !=

  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部