安装
vi /etc/yum.repos.d/nginx.repo
#Stable version
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
#Mainline version
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=0
禁止所有未授权域名及IP访问
添加一条规则如下 ,加在最后一个server后面
server {
listen 80 default;
server_name _;
return 403;
}
将未授权指向的域名跳转的指定页面
将 return 403;(返回403错误提示)修改为;
rewrite ^(.*) http://www.v1lady.com/stop.htmlpermanent;
禁止未授权域名访问 允许服务器IP的访问
server
{
listen 80;
server_name v1lady.com 42.121.31.169;
index index.html index.htm index.php;
root /home/wwwroot;
}
最后重启一下nginx
/usr/local/nginx/sbin/nginx -s reload
Nginx反向代理'/'的作用
第一种:
location /proxy/ {
proxy_pass http://127.0.0.1:81/;
}
会被代理到http://127.0.0.1:81/test.html 这个url
第二种(相对于第一种,最后少一个 /)
location /proxy/ {
proxy_pass http://127.0.0.1:81;
}
会被代理到http://127.0.0.1:81/proxy/test.html 这个url
第三种:
location /proxy/ {
proxy_pass http://127.0.0.1:81/lxy/;
}
会被代理到http://127.0.0.1:81/lxy/test.html 这个url。
第四种情况(相对于第三种,最后少一个 / ):
location /proxy/ {
proxy_pass http://127.0.0.1:81/lxy;
}
会被代理到http://127.0.0.1:81/lxytest.html 这个url
从结果可以看出,应该说分为两种情况才正确。即http://127.0.0.1:81 (上面的第二种) 这种和http://127.0.0.1:81/.... (上面的第1,3,4种) 这种。
取消nginx上传目录php执行权限
将以下代码添加至Server容器中的合适位置,也就是在定义fastcgi的规则之前.
location ~* ^/upload/.*\.(php|php5)$
{
deny all;
}
用Nginx做代理后PHP取不到HTTP_X_FORWARDED_FOR值
用nginx做前端代理后,我们发现 HTTP_X_FORWARDED_FOR 无法获取到客户端真实的IP地址了。
原因 nginx 默认并不会增加 X_FORWARDED_FOR 头信息,我们给他加上就好了。简单配置如下:
location /
{
proxy_pass http://www.92csz.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; //别忘了这一句
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr; //或是加上这一句
proxy_redirect default;
}
重启nginx加载新配置后,就可以获取客户端真实的IP地址了。
nginx php配置+反向代理配置
server {
listen 80;
server_name localhost;
location / {
root /usr/local/nginx/billing;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root share/examples/nginx/html;
}
location ^~ /test { //location 的 ^~ 含义是匹配此路径后无视其他 location 配置, 包括 location /。这样 rewrite 或其他就配置不会对此产生任何影响。
proxy_pass http://183.62.9.66:50080/;
}
location ~ \.php$ {
root /usr/local/nginx/billing;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #$document_root是location ~ \.php$中root的值
include /opt/local/etc/nginx/fastcgi_params;
}
}
www跳转到不带www
server {
server_name www.starsl.cn;
return 301 $scheme://starsl.cn$request_uri;
}
http跳转https
server
{
listen 80;
listen 443 ssl;
server_name www.starsl.cn;
if ($scheme = 'http') { return 301 https://$host$request_uri; }
}