ngnix实战与应用

以前开发学习网站应用的,学习使用过诸如 apachetomcat 这类的服务器。
nginx 也是久闻大名,正好学习下相关配置。

HTTP服务:
作为一个web资源服务器,提供数据的地方。包括图片,视频,代码,接口等等。

正向代理:
转为一个中间代理服务器,转发中心。比如:
browser -> nginx -> website
它把请求传给nginx,nginx帮你去request,然后把response返回给你。

反向代理+负载均衡:
browser -> nginx -> website1/webstie2
它把请求传给nginx,nginx根据均衡算法看看去请求哪个服务器的资源。但是有个疑问,这样对于nginx均衡服务器来说,压力不是很大吗?

实例:
代理请求baidu

在 /etc/nginx/sites-enabled 文件夹内新增 baidu.conf 配置文件,配置内容为:

server {
    listen 10011; 
    server_name 192.168.1.1;
 
    location / {
        auth_basic "Hello World";
        auth_basic_user_file conf.d/passwd;
        
        proxy_pass https://www.baidu.com/;
 
        proxy_redirect https://www.baidu.com/ ;
        proxy_cookie_domain baidu.com 192.168.1.1;
 
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header Cookie "PREF=ID=abcdefg";
 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
        sub_filter  http://www.baidu.com 192.168.1.1;
        sub_filter  https://www.baidu.com 192.168.1.1;
    }
}

然后 nginx -s reload 重启下即可。

我们还可以增加Basic Auth认证

先使用openssl生成密码:

$ printf "your_username:$(openssl passwd -crypt your_password)\n" >> /etc/nginx/conf.d/passwd

然后再配置内容中增加:

...
location / {
        auth_basic "Hello World";
        auth_basic_user_file conf.d/passwd;

        proxy_pass https://www.baidu.com/;
...

然后 nginx -s reload 重启即可。

增加https
首先检查是否安装有这个模块, nginx -V,查看是否有 --with-http_ssl_module配置。如果没有,则要查询怎么配置ssl。
然后使用 openssl 来生成 .key 和 .crt 文件

制作密钥
openssl genrsa -out test.key 2048

制作证书
openssl req -new -x509 -days 365 -key test.key -out test.crt

把域名证书放入 /etc/nginx/ssl 文件夹下。

然后按照如下配置:

server {
    listen 443;
    server_name test.com; 
    ssl on;
    ssl_certificate /etc/nginx/ssl/test.crt; 
    ssl_certificate_key/etc/nginx/ssl/test.key; 
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    }
}

然后重新加载nginx即可。

参考:
nginx制作和添加ssl证书 - 腾讯云开发者社区-腾讯云 (tencent.com)

你可能感兴趣的:(ngnix实战与应用)