<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m hoping someone can help me with this nginx config issue that I’m having. I can’t seem to figure out what the problem is. If I set with the a location directive “location /” it works fine. However, I seem to be having an issue with
modsecurity breaking one of my applications, so I figured I split the nginx config into multiple location directives and disable modsecurity on the location with the broken application that I’m having a problem with and have it enabled on the ones that I don’t
have a problem with. <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So, let me start off with the config that actually works below:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">server {<o:p></o:p></p>
<p class="MsoNormal"> listen 443 ssl;<o:p></o:p></p>
<p class="MsoNormal"> server_name server.domain.tld;<o:p></o:p></p>
<p class="MsoNormal"> add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";<o:p></o:p></p>
<p class="MsoNormal"> keepalive_timeout 70;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> ssl_certificate /etc/nginx/ssl/domain.tld.pem;<o:p></o:p></p>
<p class="MsoNormal"> ssl_certificate_key /etc/nginx/ssl/domain.tld.key;<o:p></o:p></p>
<p class="MsoNormal"> ssl_protocols TLSv1 TLSv1.1 TLSv1.2;<o:p></o:p></p>
<p class="MsoNormal"> ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';<o:p></o:p></p>
<p class="MsoNormal"> ssl_dhparam /etc/nginx/ssl/dhparam.pem;<o:p></o:p></p>
<p class="MsoNormal"> ssl_prefer_server_ciphers on;<o:p></o:p></p>
<p class="MsoNormal"> ssl_session_cache shared:SSL:10m;<o:p></o:p></p>
<p class="MsoNormal"> client_max_body_size 4G;<o:p></o:p></p>
<p class="MsoNormal"> set_real_ip_from 192.xxx.xxx.xxx;<o:p></o:p></p>
<p class="MsoNormal"> real_ip_header X-Real-IP;<o:p></o:p></p>
<p class="MsoNormal"> real_ip_recursive on;<o:p></o:p></p>
<p class="MsoNormal"> modsecurity on;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">location / {<o:p></o:p></p>
<p class="MsoNormal"> modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;<o:p></o:p></p>
<p class="MsoNormal"> proxy_connect_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_read_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Real-IP $remote_addr;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header Host $host;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<o:p></o:p></p>
<p class="MsoNormal"> proxy_pass https://server.domain.tld:9080;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Unfortunately, in the config above modsecurity breaks one of my applications under the /web directory, so
<a href="https://server.domain.tld:9080/web">https://server.domain.tld:9080/web</a> breaks.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So, I setup the following config, where I removed “modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf” from the “ location /web” directive.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">server {<o:p></o:p></p>
<p class="MsoNormal"> listen 443 ssl;<o:p></o:p></p>
<p class="MsoNormal"> server_name server.domain.tld;<o:p></o:p></p>
<p class="MsoNormal"> add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";<o:p></o:p></p>
<p class="MsoNormal"> keepalive_timeout 70;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> ssl_certificate /etc/nginx/ssl/domain.tld.pem;<o:p></o:p></p>
<p class="MsoNormal"> ssl_certificate_key /etc/nginx/ssl/domain.tld.key;<o:p></o:p></p>
<p class="MsoNormal"> ssl_protocols TLSv1 TLSv1.1 TLSv1.2;<o:p></o:p></p>
<p class="MsoNormal"> ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';<o:p></o:p></p>
<p class="MsoNormal"> ssl_dhparam /etc/nginx/ssl/dhparam.pem;<o:p></o:p></p>
<p class="MsoNormal"> ssl_prefer_server_ciphers on;<o:p></o:p></p>
<p class="MsoNormal"> ssl_session_cache shared:SSL:10m;<o:p></o:p></p>
<p class="MsoNormal"> client_max_body_size 4G;<o:p></o:p></p>
<p class="MsoNormal"> set_real_ip_from 192.xxx.xxx.xxx;<o:p></o:p></p>
<p class="MsoNormal"> real_ip_header X-Real-IP;<o:p></o:p></p>
<p class="MsoNormal"> real_ip_recursive on;<o:p></o:p></p>
<p class="MsoNormal"> modsecurity on;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">location /web {<o:p></o:p></p>
<p class="MsoNormal"> proxy_connect_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_read_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Real-IP $remote_addr;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header Host $host;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<o:p></o:p></p>
<p class="MsoNormal"> proxy_pass https://server.domain.tld:9080:9080/web;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">location /admin {<o:p></o:p></p>
<p class="MsoNormal"> modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;<o:p></o:p></p>
<p class="MsoNormal"> proxy_connect_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_read_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Real-IP $remote_addr;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header Host $host;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<o:p></o:p></p>
<p class="MsoNormal"> proxy_pass https://server.domain.tld:9080:9080/admin;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">location /main {<o:p></o:p></p>
<p class="MsoNormal"> modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;<o:p></o:p></p>
<p class="MsoNormal"> proxy_connect_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_read_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Real-IP $remote_addr;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header Host $host;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<o:p></o:p></p>
<p class="MsoNormal"> proxy_pass https://server.domain.tld:9080:9080/main;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">location /tasks {<o:p></o:p></p>
<p class="MsoNormal"> modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;<o:p></o:p></p>
<p class="MsoNormal"> proxy_connect_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_read_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> send_timeout 3600;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Real-IP $remote_addr;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header Host $host;<o:p></o:p></p>
<p class="MsoNormal"> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<o:p></o:p></p>
<p class="MsoNormal"> proxy_pass https://server.domain.tld:9080:9080/tasks;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">However, the configuration below gives me the following error:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[emerg] 19968#0: "server" directive is not allowed here in /usr/local/nginx/conf/sites-enabled/server.domain.tld-ssl:1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Googling the error, kept bring up results about the server directive being inside an http directive, which I don’t obviously have or have a need for. I would appreciate some help on this.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>