以前开发学习网站应用的,学习使用过诸如 apache,tomcat 这类的服务器。
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即可。
网友评论