Setting up an ASP Net Core app with subdirectories
I'm trying to set up an ASP Net Core app in a subdirectory (http://<website>/app
), but I'm having an issue with the app not recognizing it's URL base should start with /app/. So when I make requests to static content, or actions it's acting as if the base is "/" and not "/app". (ex: http://<website>/app/<static_content>
is what I need, but the app requests http://<website>/<static_content>
)
NGINX is set up like this:
server {
listen 80 default_server;
server_name <IP_Address>;
location /app/ {
proxy_pass http://localhost:4000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}}
My program.cs
public static IWebHostBuilder CreateWebHostBuilder(string args) =>
WebHost.CreateDefaultBuilder(args)
.UseWebRoot(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseUrls("http://localhost:4000");
}
and my startup.cs contains this:
app.UsePathBase("/app");
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
RequestPath = "/app/wwwroot"
});
EDIT:
I got it working by removing the ending slash on the proxy_pass!
server {
listen 80 default_server;
server_name <IP_Address>;
location /app1/ {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /app2/ {
proxy_pass http://localhost:5020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
both apps now seem to be making the proper requests.
c# nginx asp.net-core
add a comment |
I'm trying to set up an ASP Net Core app in a subdirectory (http://<website>/app
), but I'm having an issue with the app not recognizing it's URL base should start with /app/. So when I make requests to static content, or actions it's acting as if the base is "/" and not "/app". (ex: http://<website>/app/<static_content>
is what I need, but the app requests http://<website>/<static_content>
)
NGINX is set up like this:
server {
listen 80 default_server;
server_name <IP_Address>;
location /app/ {
proxy_pass http://localhost:4000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}}
My program.cs
public static IWebHostBuilder CreateWebHostBuilder(string args) =>
WebHost.CreateDefaultBuilder(args)
.UseWebRoot(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseUrls("http://localhost:4000");
}
and my startup.cs contains this:
app.UsePathBase("/app");
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
RequestPath = "/app/wwwroot"
});
EDIT:
I got it working by removing the ending slash on the proxy_pass!
server {
listen 80 default_server;
server_name <IP_Address>;
location /app1/ {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /app2/ {
proxy_pass http://localhost:5020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
both apps now seem to be making the proper requests.
c# nginx asp.net-core
What do you mean by app requesthttp://<website>/<static_content>
? Do you refer the static files in view like ` <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />`
– Tao Zhou
Nov 13 at 2:27
add a comment |
I'm trying to set up an ASP Net Core app in a subdirectory (http://<website>/app
), but I'm having an issue with the app not recognizing it's URL base should start with /app/. So when I make requests to static content, or actions it's acting as if the base is "/" and not "/app". (ex: http://<website>/app/<static_content>
is what I need, but the app requests http://<website>/<static_content>
)
NGINX is set up like this:
server {
listen 80 default_server;
server_name <IP_Address>;
location /app/ {
proxy_pass http://localhost:4000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}}
My program.cs
public static IWebHostBuilder CreateWebHostBuilder(string args) =>
WebHost.CreateDefaultBuilder(args)
.UseWebRoot(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseUrls("http://localhost:4000");
}
and my startup.cs contains this:
app.UsePathBase("/app");
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
RequestPath = "/app/wwwroot"
});
EDIT:
I got it working by removing the ending slash on the proxy_pass!
server {
listen 80 default_server;
server_name <IP_Address>;
location /app1/ {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /app2/ {
proxy_pass http://localhost:5020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
both apps now seem to be making the proper requests.
c# nginx asp.net-core
I'm trying to set up an ASP Net Core app in a subdirectory (http://<website>/app
), but I'm having an issue with the app not recognizing it's URL base should start with /app/. So when I make requests to static content, or actions it's acting as if the base is "/" and not "/app". (ex: http://<website>/app/<static_content>
is what I need, but the app requests http://<website>/<static_content>
)
NGINX is set up like this:
server {
listen 80 default_server;
server_name <IP_Address>;
location /app/ {
proxy_pass http://localhost:4000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}}
My program.cs
public static IWebHostBuilder CreateWebHostBuilder(string args) =>
WebHost.CreateDefaultBuilder(args)
.UseWebRoot(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseUrls("http://localhost:4000");
}
and my startup.cs contains this:
app.UsePathBase("/app");
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
RequestPath = "/app/wwwroot"
});
EDIT:
I got it working by removing the ending slash on the proxy_pass!
server {
listen 80 default_server;
server_name <IP_Address>;
location /app1/ {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /app2/ {
proxy_pass http://localhost:5020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
both apps now seem to be making the proper requests.
c# nginx asp.net-core
c# nginx asp.net-core
edited Nov 13 at 4:22
asked Nov 11 at 19:10
John Singh
11
11
What do you mean by app requesthttp://<website>/<static_content>
? Do you refer the static files in view like ` <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />`
– Tao Zhou
Nov 13 at 2:27
add a comment |
What do you mean by app requesthttp://<website>/<static_content>
? Do you refer the static files in view like ` <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />`
– Tao Zhou
Nov 13 at 2:27
What do you mean by app request
http://<website>/<static_content>
? Do you refer the static files in view like ` <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />`– Tao Zhou
Nov 13 at 2:27
What do you mean by app request
http://<website>/<static_content>
? Do you refer the static files in view like ` <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />`– Tao Zhou
Nov 13 at 2:27
add a comment |
1 Answer
1
active
oldest
votes
For responding request from /
to /app
, try code below in Startup.cs
app.Map("/app",
subApp =>
{
subApp.UseStaticFiles();
subApp.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
);
I got it working by removing the last slash in my NGINX configuration, I appreciate it though!
– John Singh
Nov 13 at 4:22
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53252220%2fsetting-up-an-asp-net-core-app-with-subdirectories%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
For responding request from /
to /app
, try code below in Startup.cs
app.Map("/app",
subApp =>
{
subApp.UseStaticFiles();
subApp.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
);
I got it working by removing the last slash in my NGINX configuration, I appreciate it though!
– John Singh
Nov 13 at 4:22
add a comment |
For responding request from /
to /app
, try code below in Startup.cs
app.Map("/app",
subApp =>
{
subApp.UseStaticFiles();
subApp.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
);
I got it working by removing the last slash in my NGINX configuration, I appreciate it though!
– John Singh
Nov 13 at 4:22
add a comment |
For responding request from /
to /app
, try code below in Startup.cs
app.Map("/app",
subApp =>
{
subApp.UseStaticFiles();
subApp.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
);
For responding request from /
to /app
, try code below in Startup.cs
app.Map("/app",
subApp =>
{
subApp.UseStaticFiles();
subApp.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
);
answered Nov 13 at 2:23
Tao Zhou
4,87031128
4,87031128
I got it working by removing the last slash in my NGINX configuration, I appreciate it though!
– John Singh
Nov 13 at 4:22
add a comment |
I got it working by removing the last slash in my NGINX configuration, I appreciate it though!
– John Singh
Nov 13 at 4:22
I got it working by removing the last slash in my NGINX configuration, I appreciate it though!
– John Singh
Nov 13 at 4:22
I got it working by removing the last slash in my NGINX configuration, I appreciate it though!
– John Singh
Nov 13 at 4:22
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53252220%2fsetting-up-an-asp-net-core-app-with-subdirectories%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What do you mean by app request
http://<website>/<static_content>
? Do you refer the static files in view like ` <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />`– Tao Zhou
Nov 13 at 2:27