# 使用Nginx搭建SSL配置

跳板机是所有服务器的入口，所以，它的安全至关重要。因此，建议把`Jumpserver`搭建在内网环境中，并且加上SSL证书，保证数据传输的安全。

## nginx的安装

不同的操作系统及版本，安装方法都不太一样。我们以`Debian`为例。

```
apt-get update
apt-get install -y nginx
```

更多安装示例请参考 [Nginx官方安装指南](https://www.nginx.com/resources/wiki/start/topics/tutorials/install/)

## Nginx中的SSL的配置

* 编辑 `/etc/nginx/sites-enabled/default` 或者指定的`Jumpserver`的配置文件

* 示例如下

```
server {
  listen              443;
  listen              80;
  server_name         YOUR_DOMAIN;
  ssl_certificate     /etc/nginx/certs/YOUR_DOMAIN_CRT.crt;
  ssl_certificate_key /etc/nginx/certs/YOUR_DOMAIN_KEY.key;
  ssl_protocols	TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers	HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;
  ssl on ;

  if ($ssl_protocol = "") {
    rewrite ^ https://$host$request_uri? permanent;
  }

  location / {
    proxy_set_header Connection "";
    proxy_http_version 1.1;
    proxy_pass      http://JUMPSERVER_HOST:WEB_PORT;
  }

  location /_ws/ {
    keepalive_timeout 600s;
    send_timeout 600s;
    proxy_connect_timeout 7d;
    proxy_send_timeout 7d;
    proxy_read_timeout 7d;
    rewrite ^/_ws(/.*)$ $1 break;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass      http://JUMPSERVER_HOST:WS_PORT;
  }
}

```

* 请替换如下表格的关键字


关键字  		 		| 示例          					| 说明
------------- 		| -------------					|-------
`YOUR_DOMAIN`  		|  example.com 					| `Jumpserver`的域名
`YOUR_DOMAIN_CRT`  	| /etc/nginx/certs/example.crt	| SSL证书的CRT文件
`YOUR_DOMAIN_KEY`  	| /etc/nginx/certs/example.key	| SSL证书的KEY文件
`JUMPSERVER_HOST`  	| 127.0.0.1						| `Jumpserver`服务器IP
`WEB_PORT ` 		| 80							| `Jumpserver`网页监听端口
`WS_PORT `  		| 3000							| websocket端口，`Jumpserver` 默认为3000

* 此配置会强制使用`https`, 建议加上(即if判断的那三行)。