stream {
log_format proxy 'time=[$time_local] remote_addr=[$remote_addr]'
' protocol=[$protocol] status=[$status] byte_send=[$bytes_sent] byte_received=[$bytes_received] '
'session_time=[$session_time] upstream_addr=[$upstream_addr] '
'upstream_
server {
listen 80 default_server;
server_name www.youname.com youname.com;
charset utf-8;
rewrite ^(.*)$ https://www.youname.com;
}
server {
listen 443 default ssl;
server_name www.youname.com youname.com;
root /home/work/youname/public;
index
问题
nginx 启动后 error 日志里报错,并且 https 无法访问,报错如下
"ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 100.120.198.130, server: 0.0.0.0:443
我们需要修改下 nginx conf 配置,在 listen 443 中添加 default_server
server {
listen 443 ssl; # 报错配置
listen 443 default_server ssl; #
模式
含义
location = /uri
= 表示精确匹配只有完全相等才会匹配成功
location ^~ /uri
^~ 表示对路由进行前缀匹配
location ~ /uri
~ 表示对路由进行正则匹配
location ~* /uri
~* 表示对路由进行不区分大小写的正则匹配
location /uri
不带任何修饰符也表示前缀匹配
location /
默认匹配,任何没有匹配到的uri
多个 location 配置的情况下匹配顺序为(匹配到某一等级就结束,同一规则时匹配长度长的优先):
首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺
推荐日志配置
log_format main 'remote_addr=[$remote_addr] http_x_forward=[$http_x_forwarded_for] time=[$time_local] request=[$request] '
'status=[$status] byte=[$bytes_sent] elapsed=[$request_time] upstream_connect_time=[$upstream_connect_time] upstream_response_time=[$upstream_response_time] '
nginx服务器返回200但是浏览器报错 net::ERR_INCOMPLETE_CHUNKED_ENCODING
原因是nginx在获得后端服务器返回数据时,数据过大需要存在临时文件中,但是当前运行nginx用户,没有该文件的读写权限
导致的。
如何证实
可以查看nginx的日志,会有以下类似错误
2018/03/22 16:11:35 [crit] 9519#0: *339625 open() "/var/lib/nginx/tmp/fastcgi/5/02/0000000025" failed
很明显,nginx无法写/var/lib/nginx/tmp/fastcgi/5/02/000